为了账号安全,请及时绑定邮箱和手机立即绑定

在将 forEach 和 Reduce 映射到映射对象时遇到问题

在将 forEach 和 Reduce 映射到映射对象时遇到问题

千万里不及你 2022-08-27 15:11:55
当与对象值一起使用时,此方法适用于对象。但是,如何使其在地图对象上工作呢?const one = new Map ();one.set ('part1', {section1: 1, section2: 'one'});one.set ('part2', {section1: 8, section2: 'eight'});one.set ('part3', {section1: 5, section2: 'five'});one.forEach(x => console.log(x.section1));let temp1 = one.forEach(x => x.section1);console.log(temp1);let temp2 = one.forEach(x => x.section1).reduce((sum, cur) => sum + cur);console.log(temp2);
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

该函数返回未定义,因此您无法调用该函数 reduce。forEach


此外,你不需要调用函数,用一个reduce就好了。Array.prototype.map


const one = new Map ();

one.set ('part1', {section1: 1, section2: 'one'});

one.set ('part2', {section1: 8, section2: 'eight'});

one.set ('part3', {section1: 5, section2: 'five'});


let temp2 = Array.from(one.values()).reduce((sum, {section1: cur}) => sum + cur, 0);

console.log(temp2);


查看完整回答
反对 回复 2022-08-27
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

forEach 返回 ,您需要使用 来获取数组中的 值来调用它。undefinedArray.mapsection1reduce


但问题是你没有财产。幸运的是,我们.Map.mapvalues


values() 方法返回一个新的 Iterator 对象,该对象包含 Map 对象中按插入顺序排列的每个元素的值。


因此,我使用over迭代器在中获取一个可以运行的数组。...[].map


const one = new Map ();

one.set ('part1', {section1: 1, section2: 'one'});

one.set ('part2', {section1: 8, section2: 'eight'});

one.set ('part3', {section1: 5, section2: 'five'});


let temp = [...one.values()].map(x => x.section1).reduce((sum, cur) => sum + cur);

console.log(temp);


或者,您甚至不需要函数 当您将值转换为数组时,可以直接调用mapMapreduce


const one = new Map ();

one.set ('part1', {section1: 1, section2: 'one'});

one.set ('part2', {section1: 8, section2: 'eight'});

one.set ('part3', {section1: 5, section2: 'five'});


let tempAlt = [...one.values()].reduce((sum, {section1: cur}) => sum + cur, 0);

console.log(tempAlt);


查看完整回答
反对 回复 2022-08-27
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号