forEach、filter、some方法及查询

140 阅读2分钟

forEach

array.forEach(function(currentValue, index, arr))

  • currentValue: 数组当前项的值
  • index: 数组当前项的索引
  • arr: 数组对象本身
var arr = [1, 2, 3];
var sum = 0;
arr.forEach(function(value, index, array) {
    console.log('每个数组元素' + value);
    console.log('每个数组元素的索引号' + index);
    console.log('数组本身' + array);
    sum += value;
})
console.log(sum); // 6

filter

array.filter(function(currentValue, index, arr))

  • filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组
  • 注意他直接返回一个新数组
  • currentValue: 数组当前项的值
  • index: 数组当前项的索引
  • arr: 数组对象本身
var arr = [12, 66, 4, 88, 3, 7];
var newArr = arr.filter(function(value, index) {
    return value >= 20;
});
console.log(newArr); // [66, 88]

some

array.some(function(currentValue, index, arr))

  • some()方法用于检测数组中的元素是否满足指定条件,通俗点:查找数组中是否有满足条件的元素
  • 注意它返回值是布尔值,如果查找到这个元素,就返回true,如果查找不到就返回false
  • 如果找到第一个满足条件的元素,则终止循环,不再继续查找
  • currentValue: 数组当前项的值
  • index: 数组当前项的索引
  • arr: 数组对象本身
var arr = ['red', 'pink', 'blue'];
var flag = arr.some(function(value) {
    return value == 'pink';
});
console.log(flag); // true

filter与some区别

  • filter 是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来
  • some 是查找满足条件的元素是否存在 返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环

forEach与some区别

var arr = ['red', 'green', 'blue', 'pink'];
arr.forEach(function(value) {
    if (value == 'green') {
        console.log('找到了该元素');
        return true; // 在forEach 里面 return 不会终止迭代
    }
    console.log(11); // 打印三次
})


// 如果查询数组中唯一的元素, 用some方法更合适,
arr.some(function(value) {
    if (value == 'green') {
        console.log('找到了该元素');
        return true; // 在some 里面 遇到 return true 就是终止遍历 迭代效率更高
    }
    console.log(11); // 只打印一次
});