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

我想知道如何使用现有数组对象的属性值中的键创建新数组。我知道如何使用循环来做到这一点,但是有没有更好的解决方案,例如使用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 } } ) );


江户川乱折腾
浏览 104回答 3
3回答

繁花不似锦

您只需要将动态密钥名称括在方括号中,如下所示:[][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; }

精慕HU

你可以这样做;你太近了,只是你忘记了使用绑定钥匙[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)

MMMHUHU

如果要使用表达式作为键,请将其括在方括号中:let arr2 = arr1.map(e => ({[e.name]: {id: e.id, surname: e.surname}}));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript