js中的 map,foreach,reduce 之间有什么区别么
3个回答
展开全部
forEach: 对数组中每一个元素都运行函数,该方法没有返回值。如果你想对数据里的每一个元素进行处理,可以采用forEach来替换 for循环
map:对数组中每一个元素都运行函数, 返回由每次函数执行的结果组成的数组。果你想对数据里的每一个元素进行处理,可以采用forEach来替换 for循环,和forEach不同的是,它最终会返回一个新的数组,数组的元素是每次处理先前数组中元素返回的结果
reduce: 对数组中的所有元素调用指定的回调函数。 该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。
还是看例子来理解吧:
var arr3 = [1,2,9,5,4];
// 数组中每个元素都要翻10倍
var arr4 = arr3.map(function(ele,index,arr2) {
return ele*10;
});
console.log(arr4.toString()); //10,20,90,50,40
arr3.forEach(function(ele,index,arr){
console.log("模拟插入元素到数据库:"+ele);
});
打印结果:
模拟插入元素到数据库:1
模拟插入元素到数据库:2
模拟插入元素到数据库:9
模拟插入元素到数据库:5
模拟插入元素到数据库:4
reduce的测试例子:
// Define the callback function.
function appendCurrent (previousValue, currentValue) {
return previousValue + "::" + currentValue;
}
// Create an array.
var elements = ["abc", "def", 123, 456];
// Call the reduce method, which calls the callback function
// for each array element.
var result = elements.reduce(appendCurrent);
document.write(result);
// Output:
// abc::def::123::456
展开全部
map是循环一个数组然后返回一个值组成新的数组;
1[1,2,3].map(function(v){return v*v}); //返回[1,4,9]
forEach只是循环数组,无返回值(相当于for循环);
reduce是循环一个数组,然后组合成一个值
1[1,2,3].reduce(function(prv,v){return prev+v}); //返回6
1[1,2,3].map(function(v){return v*v}); //返回[1,4,9]
forEach只是循环数组,无返回值(相当于for循环);
reduce是循环一个数组,然后组合成一个值
1[1,2,3].reduce(function(prv,v){return prev+v}); //返回6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-08-12
展开全部
假设我们有一个数组,每个元素是一个人。你面前站了一排人。
foreach 就是你按顺序一个一个跟他们做点什么,具体做什么,随便:
people.forEach(function (dude) {
dude.pickUpSoap();
});
map 就是你手里拿一个盒子(一个新的数组),一个一个叫他们把钱包扔进去。结束的时候你获得了一个新的数组,里面是大家的钱包,钱包的顺序和人的顺序一一对应。
var wallets = people.map(function (dude) {
return dude.wallet;
});
reduce 就是你拿着钱包,一个一个数过去看里面有多少钱啊?每检查一个,你就和前面的总和加一起来。这样结束的时候你就知道大家总共有多少钱了。
var totalMoney = wallets.reduce(function (countedMoney, wallet) {
return countedMoney + wallet.money;
}, 0);
foreach 就是你按顺序一个一个跟他们做点什么,具体做什么,随便:
people.forEach(function (dude) {
dude.pickUpSoap();
});
map 就是你手里拿一个盒子(一个新的数组),一个一个叫他们把钱包扔进去。结束的时候你获得了一个新的数组,里面是大家的钱包,钱包的顺序和人的顺序一一对应。
var wallets = people.map(function (dude) {
return dude.wallet;
});
reduce 就是你拿着钱包,一个一个数过去看里面有多少钱啊?每检查一个,你就和前面的总和加一起来。这样结束的时候你就知道大家总共有多少钱了。
var totalMoney = wallets.reduce(function (countedMoney, wallet) {
return countedMoney + wallet.money;
}, 0);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询