# 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)
    
上次更新: 11/5/2021, 11:32:42 AM