js 关于array的reduce方法的问题

众所周知,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":{}}}

请问是为什么?

阅读 4.2k
3 个回答

因为

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

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

是的,改成

obj[key] = obj[key] || {};
return obj;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题