JavaScript中对数组.map()、some()、every()、filter()、forEach的区别

1、区别说明

共同点:

         不会对原数组发生修改,而是返回新的变量,用变量接收。

不同点:

       1、some():返回一个Boolean类型变量,判断是否有元素符合func条件

       2、every():返回一个Boolean类型变量,判断每个元素是否都符合func条件

       3、filter():返回一个新数组类型变量,数组符合func条件,新数组中的元素来源于原数组,新数组长度<=原数组长度

       4、map():返回一个新数组类型变量,新数组元素由每一次调用函数产生结果组成,新数组中的元素与原数组可完全不一样

       5、forEach():用法和map()相似,但是forEach()方法不返回值,forEach无法中断执行,如果需要中断需要改用for

2、用法实例

some()实例

如果fun只有一个参数,那么参数是element。

var arr = [1, 2, 3, 4, 5];
var result=arr.some(function (elem, index, arr) {
  return elem >= 3;
});
//result: true

every()实例

如果fun只有一个参数,那么参数是element。

var arr = [1, 2, 3, 4, 5];
var result=arr.every(function (elem, index, arr) {
  return elem >= 3;
});
// result:false

filter()实例

如果fun只有一个参数,那么参数是element。

var arr=[1, 2, 3, 4, 5]
var result=arr.filter(function (elem, index, arr) {
  return index % 2 === 0;
});
// [1, 3, 5]

可接收第二个参数,主要用于解决this的问题,但是用箭头函数可以规避这个问题

var obj = { MAX: 3 };
var myFilter = function (item) {
  if (item > this.MAX) return true;
};
var arr = [2, 8, 3, 4, 1, 3, 2, 9];
arr.filter(myFilter, obj) // [8, 4, 9]

map()实例

如果fun只有一个参数,那么参数是element。

var arr=[1, 2, 3]
var result=arr.map(function(elem, index, arr) {
  return elem * index;
});
// [0, 2, 6]

forEach()实例

如果fun只有一个参数,那么参数是element。

function log(element, index, array) {
  console.log('[' + index + '] = ' + element);
}

[2, 5, 9].forEach(log);
// [0] = 2
// [1] = 5
// [2] = 9

可接收第二个参数,主要用于解决this的问题,但是用箭头函数可以规避这个问题

var out = [];
[1, 2, 3].forEach(function(elem) {
  this.push(elem * elem);
}, out);
out // [1, 4, 9]
原文地址:https://www.cnblogs.com/tiandi/p/13885252.html