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

如何在不循环的情况下从现有数组值映射具有动态键的新数组?

如何在不循环的情况下从现有数组值映射具有动态键的新数组?

江户川乱折腾 2022-09-02 21:03:37
我想知道如何使用现有数组对象的属性值中的键创建新数组。我知道如何使用循环来做到这一点,但是有没有更好的解决方案,例如使用array.map函数?输入数组:[ {id: 1, name: 'John', surname: 'Smith'}, {id: 2, name: 'Peter', 'Black'} ]请求的结果:[ { 'John' : { id: 1, surname: 'Smith'}}, {'Peter': {id: 2, surname: 'Black'}} } ]我仍然收到带有密钥名称的错误意外令牌“.”。var arr1 = [ {id: 1, name: 'John', surname: 'Smith'}, {id: 2, name: 'Peter', surname: 'Black'} ];let arr2 = arr1.map( e => ( { e.name : {id: e.id, surname: e.surname } } ) );
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您只需要将动态密钥名称括在方括号中,如下所示:[]


[e.name] : {id: e.id, surname: e.surname } 

var arr1 = [ {id: 1, name: 'John', surname: 'Smith'}, {id: 2, name: 'Peter', surname: 'Black'} ];

let arr2 = arr1.map( e => ({ [e.name] : {id: e.id, surname: e.surname} }));

console.log(arr2)

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2022-09-02
?
精慕HU

TA贡献1845条经验 获得超8个赞

你可以这样做;你太近了,只是你忘记了使用绑定钥匙[obj.name]


  

let data = [{ id: 1, name: 'John', surname: 'Smith' }, { id: 2, name: 'Peter',surname: 'Black'}]

let finalResult =data.map(obj => ({ [obj.name]: { id: obj.id, surname: obj.surname } }))

console.log(finalResult)


查看完整回答
反对 回复 2022-09-02
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果要使用表达式作为,请将其括在方括号中:

let arr2 = arr1.map(e => ({[e.name]: {id: e.id, surname: e.surname}}));


查看完整回答
反对 回复 2022-09-02
  • 3 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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