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]