如何简写此ES6代码

   var arr =[{id:1,name:'name1'},{id:4,name:'name2'},{id:5,name:'name3'}];
arr.reduce((all,i)=>{
       all[i.id]=i.name;
       return all
   },{}

请问这段代码可以不写return实现同样效果吗?

阅读 1.7k
3 个回答
var arr =[{id:1,name:'name1'},{id:4,name:'name2'},{id:5,name:'name3'}];

arr.reduce((all,i)=>[all[i.id]=i.name,all][1],{})

换汤不换药

这个思路应该比较少见

Object.assign(...arr.map(x => ({[x.id]: x.name})))

reduce 不写return没效果的。

最多就变成 return (all[i.id] = i.name), all

var arr = [{ id: 1, name: 'name1' }, { id: 4, name: 'name2' }, { id: 5, name: 'name3' }]
arr.reduce((all, i) => ((all[i.id] = i.name), all), {})

或者你自己声明一个对象,然后给对象添加属性。就不用return了

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