# TypeScript 数组
# 数组声明
let a = [1, 2, 3, 'a' , true]
console.log(a) // [1, 2, 3, 'a' , true]
console.log(typeof a) // object
let b: number[] = [1,2, 3]
let c: Array<number> = [1, 2, 3]
let d: string[] = ['a', 'b', 'c']
// 空数组
let e: number[] = []
# 数组越界
let a = [1, 2, 3]
console.log(a[-1]) // undefined
console.log(a[4]) // undefined
# 判断数组是否为空 —— 判断长度
let a:number[] = []
if(a){
console.log('a is not empty') // a is not empty
}else{
console.log('a is empty')
}
if(a.length !== 0){
console.log('a is not empty')
}else{
console.log('a is empty') // a is empty
}
# 数组插入删除
let a: number[] = []
// 右边操作
a.push(1) // [1]
a.push(2) // [1, 2]
a.push(3) // [1, 2, 3]
console.log(a) // [1, 2, 3]
let i = a.pop()
console.log(i) // 3
console.log(a) // [1, 2]
// 左边操作
a.unshift(9) // [9, 1, 2]
a.unshift(8) // [8, 9, 1, 2]
a.unshift(7) // [7, 8, 9, 1, 2]
console.log(a) // [7, 8, 9, 1, 2]
i = a.shift()
console.log(i) // 7
console.log(a) // [8, 9, 1, 2]
# const 数组
const a: number[] = []
// 可以,数组内容可以变,数组本身不能变
a.push(1)
a.pop()
// 不可以,数组不能换
a = [1,2,3]
# 子数组
const a: number[] = [1, 2, 3, 4, 5]
console.log(a.slice(2, 5)) // [3, 4, 5]
console.log(a.slice(-1, 0)) // []
console.log(a.slice(2,10)) // [3, 4, 5]
console.log(a.slice(3)) // [4, 5]
# 批量删除
const a: number[] = [1, 2, 3, 4, 5]
// 从 index=3 开始删除 2 个元素,包括 index=3
const deleted = a.splice(3, 2)
console.log(a) // [1, 2, 3]
console.log(deleted) // [4, 5]
# 批量插入
const a: number[] = [1, 2, 3, 4, 5]
// 从 index=3 开始删除 0 个元素,然后从 index=3 开始插入 10、11、12
const deleted = a.splice(3, 0, 10, 11, 12)
console.log(a) // [1, 2, 3, 10, 11, 12, 4, 5]
console.log(deleted) // []
# 查找元素
const a: number[] = [1, 1, 3, 4, 5]
console.log(a.indexOf(1)) // 0
console.log(a.indexOf(-1)) // -1
# 排序
let a = [5, 2, 1, 11, 23, 4, 5, 0, 64, 8]
// 按照字典顺序排序
a.sort()
console.log(a) // [0, 1, 11, 2, 23, 4, 5, 5, 64, 8]
// 按照数值大小排序
function compareNumber(a: number, b:number):number{
// a<b 返回负数
// a=b 返回 0
// a>b 返回正数
return a-b
}
a.sort(compareNumber)
console.log(a) //[0, 1, 2, 4, 5, 5, 8, 11, 23, 64]
# 元组 tuple
// 元组 tuple
const a = [1, 2, 3]
const [a1, a2] = a
console.log(a1, a2) // 1, 2
const [b1, b2, b3, b4] = a
console.log(b1, b2, b3 ,b4) // 1, 2, 3, undefined
# 数组变换
a.sort
a.filter
a.forEach
const a = [1, 2, 3, 4] a.forEach(v => { console.log(v) })
a.map
const a = [1, 2, 3, 4] const b = a.map(v => v * v) console.log(b)
a.reduce
const a = [1, 2, 3, 4] // pre 是之前的值 // cur 是现在的值 // 不断叠加,达到求和的效果 const sum = a.reduce((pre, cur) => pre + cur) console.log(sum)