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