数组的一家

2,724 阅读2分钟

Array

分为 不影响原数组影响原数组 两大类!!!


const arr = [

    { name: 'zs', age: 19 },

    { name: 'ls', age: 9 },

    { name: 'ww', age: 29 },

]

// 1.都不影响原来的数组, 都是得到一个新的数组

// 过滤出满足条件的项

const res = arr.filter((item) => item.age > 10)

// 一比一映射出一个相同长度的数组

const res2 = arr.map((item) => item.name)

// 找不到返回undefined, 找到第一个满足条件的就结束

const res3 = arr.find(item => item.name === 'zs')

// 找不到返回-1, 找到第一个满足条件的就结束

const res4 = arr.findIndex(item => item.name === 'ls')

// 找到第一个满足条件的就结束, 返回true; 都不满足返回false

const res5 = arr.some(item => {

    // console.log(item)

    return item.age > 10

})

// 找到第一个不满足条件的就结束, 返回false; 都满足返回true

const res6 = arr.every(item => {

    // console.log(item)

    return item.age > 10

})

// acc第一次是给定的初始值0, 回调函数的返回值作为下一次acc的值

const res7 = arr.reduce((acc, cur) => {

    return acc + cur.age

}, 0)

// 从右到左遍历reduce

const res8 = arr.reduceRight((acc, cur) => {

    return acc + cur.age

}, 0)

// 单纯遍历

arr.forEach((item, index) => {

    console.log(item, index)

})


const arr2 = [1, 2, 3]

const arr3 = [4, 5, 6]

// 不影响原数组, 返回截取的新数组

console.log(arr2.slice(0, 1))

// 不影响原数组, 返回一个合并好的新数组

console.log(arr2.concat(arr3))


const arr4 = [1, [2, 3, [4, 5, 6]]]

// 不影响原数组, 返回一个扁平化好的数组

console.log(arr4.flat(Infinity))


// 是否包含某项

const arr5 = [1, 2, 3, 2, 3]

console.log(arr5.includes(4)) // false

console.log(arr5.indexOf(3)) // 2

console.log(arr5.lastIndexOf(3)) // 4


// 不影响原数组, 将数组每一项用分隔符拼接成字符串 然后返回

console.log(arr5.join('-'))



--------------------------------------------------------------




// 2.影响原数组

const arr2 = [1, 2, 3]

// 直接将原数组翻转

arr2.reverse()

// 数组最后添加, 返回数组长度

console.log(arr2.push(4, 5))

// 删除数组最后一个, 返回被删除的项

console.log(arr2.pop())

// 数组最前添加, 返回数组长度

console.log(arr2.unshift(4, 7))

// 删除数组最前一个, 返回被删除的项

console.log(arr2.shift())

// 对原数组排序

arr2.sort((a, b) => {

    // a后面那个数, b前面那个数

    // 返回值>0, 不交换位置; 反之 换位置

    console.log(a, b)

    return b - a

})

// 删除数组中指定位置的项(也可以新增), 返回被删除项组成的数组

console.log(arr2.splice(1, 1))

6.webp