数组常用高级API(包含 ES6+)

1. Array.every

    全部满足条件。

// 是否全部大于0
let a = [1,2,3,4].every(item => {
    return item > 0;
});
console.log(a); // true

2. Array.some

    部分满足条件。

// 是否有部分大于3
let a = [1,2,3,4].some(item => {
    return item > 3;
});
console.log(a); // true

一旦找到对应的项,立即停止遍历数组。

3. Array.filter

按条件过滤。

注意:过滤结果是一个数组。

const persons = [
    {name: 'Jim', age: 22},
    {name: 'Alen', age: 17},
    {name: 'Lily', age: 20}
]

let a = persons.filter(person => {
    return person.age > 20;
});
console.log(a)  // [{name: 'Jim', age: 22}]

4. Array.reduce

汇总。

适用场景1:累加

let a = [1,2,3,4].reduce((total, item) => {
    return total + item;
}, 0);
console.log(a) // 10

适用场景2:数组处理

// 如:获取年龄大于18岁人的名字
const persons = [
    {name: 'Jim', age: 22},
    {name: 'Alen', age: 17},
    {name: 'Lily', age: 20}
]

let names = persons.reduce((names, person) => {
    if (person.age > 18) {
        names.push(person.name)
    }
    return names;
}, []);
console.log(names) // ['Jim', 'Lily']

适用场景3:将数组转化为对象

const arr = [
    {id: '1', name: 'Jim'},
    {id: '2', name: 'Lily'},
    {id: '3', name: 'Allen'}
]

let obj = arr.reduce((acc, current) => {
    return {...acc, [current.id]: current};
}, {})

console.log(obj)
// {
//     1: {id: '1', name: 'Jim'},
//     2: {id: '2', name: 'Lily'},
//     3: {id: '3', name: 'Allen'}
// }

适用场景4:将二维数组扁平化为一维数组

const arrLevel2 = [
    ['大', '家', '好'],
    ['我', '是', '渣', '渣', '辉']
];

let arrLevel1 = arrLevel2.reduce((acc, current) => {
    return acc.concat(current);
}, [])

console.log('arrLevel1', arrLevel1)
// -> ["大", "家", "好", "我", "是", "渣", "渣", "辉"]

适用场景5:在一次遍历中进行多次计算

有时我们需要对数组进行多次计算。例如,我们想要计算数字列表的最大值和最小值,我们可以这样写:

const readings = [0.3, 1.2, 3.4, 0.2, 3.2, 5.5, 0.4];

const initMinMax = {
    minReading: Number.MAX_VALUE,
    maxReading: Number.MIN_VALUE,
};

const minMax = readings.reduce((acc, current) => {
    return {
        minReading: Math.min(acc.minReading, current),
        maxReading: Math.max(acc.maxReading, current)
    }
}, initMinMax);

console.log(minMax); // -> {minReading: 0.2, maxReading: 5.5}

5. Array.find

找出第一个符合条件的数组成员,没找到返回 undefined。

const persons = [
    {id: 1, name: 'Jim', age: 22},
    {id: 2, name: 'Alen', age: 17},
    {id: 3, name: 'Lily', age: 20}
]

let a = persons.find(person => {
    return person.id === 2;
});

console.log(a) // {id: 2, name: 'Alen', age: 17}

6. Array.findIndex

找出第一个符合条件的数组成员的位置,没找到返回 -1。

const persons = [
    {id: 1, name: 'Jim', age: 22},
    {id: 2, name: 'Alen', age: 17},
    {id: 3, name: 'Lily', age: 20}
]

let a = persons.findIndex(person => {
    return person.id === 2;
});

console.log(a) // 1

7. Array.includes

表示某个值是否在数组里,includes() 不接受函数参数。

let a = [1,2,3].includes(3);

console.log(a) // true

8. Array.map

遍历(有返回值)。

9. Array.forEach

遍历(无返回值)。

 

数组其他API

 

你可能感兴趣的:(JavaScript)