filter()、some()、every()方法的区别

16,742 阅读1分钟

filter

创建一个新数组,新数组中的元素都是符合指定条件过滤后的元素。

特点:
(1filter会遍历数组中的每一项,找到符合指定条件的元素返回。返回一个新数组。
(2filter对空数组不会进行检测,不会改变原始数组。
let arr = [1,2,6,7,8];

let filterArr = arr.filter(item=>{return item == 6});

console.log('arr:',arr); // [ 1, 2, 6, 7, 8 ],
console.log('filterArr:',filterArr); // [6]


// 空数组不进行检测,未打印Kong
var newArr = [].filter(item=>{console.log('Kong')});

console.log(newArr); // []

some

用来检测数组中的元素是否满足指定条件。

特点:
(1)若有一个元素符合条件,则返回true,且后面的元素不会再检测。
(2)不会对空数组进行检测,不会改变原数组
let hadVal2 = arr.some(item=>{
    console.log(item); // 1,2
    return item == 2;
});

let hadVal10 = arr.some(item=>{return item == 10});

console.log('arr:',arr); // [ 1, 2 ]
console.log('hadVal2:',hadVal2); // true
console.log('hadVal10:',hadVal10); // false 

every

用来检测数组中每个元素(检测所有元素)是否都符合指定条件。

特点:
(1)若有一个不满足条件,则返回false,后面的元素都不会再执行。
(2)不会对空数组进行检测,不会改变原始数组
// 检测数组中每个元素是否 都满足 加2后小于5
let everyFlag = arr.every(item=>{
    console.log(item); // 1,2,6
    return item + 2 < 5
});

console.log('arr:',arr); //  [ 1, 2, 6, 7, 8 ] 
console.log('everyFlag:',everyFlag); // false

let everyEmptyFlag = [].every(item=>{console.log('Kong...');});
console.log('everyEmptyFlag:',everyEmptyFlag); // true