js中的 map,foreach,reduce 之间有什么区别么

 我来答
爱孤傲王者
推荐于2018-03-20 · TA获得超过7951个赞
知道大有可为答主
回答量:4137
采纳率:0%
帮助的人:588万
展开全部

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
五长暨丹彤
2020-07-06 · TA获得超过3881个赞
知道大有可为答主
回答量:3178
采纳率:26%
帮助的人:265万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式