javascript - js 关于array的reduce方法的问题
大家讲道理
大家讲道理 2017-04-10 15:29:11
[JavaScript讨论组]

众所周知,array的reduce方法很有用,有下面的一段代码:

var obj=new Object();
["person","name"].reduce(function(obj,key){
  console.info("obj。。");
  console.info(obj);
  console.info("key。。");
  console.info(key);
  console.info(obj[key])
  return obj[key] = obj[key] || {};
},obj);
console.info("out..")
console.info(obj)

实际的结果是{"person":{"name":{}}}

请问是为什么?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
伊谢尔伦

因为

return obj[key] = obj[key] || {};

返回的是 obj[key] 而非 obj,每次操作都更深入了一层。

迷茫

是的,改成

obj[key] = obj[key] || {};
return obj;
高洛峰

reduce ECMA5也提供了此方法 “ 将上次 return的结果作为本次的参数” https://msdn.microsoft.com/library/ff679975(v=vs.94).aspx
还有一个函数reduceRight 跟他作用一样只是循环顺序相反

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号