首页 > js 关于array的reduce方法的问题

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":{}}}

请问是为什么?


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


因为

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

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


是的,改成

obj[key] = obj[key] || {};
return obj;
【热门文章】
【热门文章】