从js中另一个对象的值创建新对象

Meh*_*hdi 3 javascript

我想要做的非常简单,并且有一个我无法理解的语法错误:

我有一个包含一些对象的数组,我想使用这些对象的某些值创建另一个数组:

let fields = [{type:'a',label:'email'},{type:'b',label:'name'},{type:'a',label:'tel'}]
let respone = []

// different implementation
fields.map(item => {
   respone.push({item.label: ''}) } )
`Uncaught SyntaxError: Unexpected token .`


fields.map(item => {
   respone = [...response, {item.label: ''}]  } )
`Uncaught SyntaxError: Unexpected token .`



fields.map(item => {
   respone = [...response, {item['label']: ''}]  } )
`Uncaught SyntaxError: Unexpected token [`
Run Code Online (Sandbox Code Playgroud)

显然错误来自创建对象{item['label']: ''}。这些错误的原因是什么,从现有对象值创建新对象的最佳方法是什么。

Sno*_*key 5

所以你有一个对象数组,由type和组成label。您想使用该数组创建一个“复合对象”。首先,你不想respone成为一个数组,你想让它成为一个对象。其次,您想将键命名respone为 的值item.label

试试这个代码:

let fields = [{type:'a',label:'email'},{type:'b',label:'name'},{type:'a',label:'tel'}]

// Create an empty object
let respone = {}

// Iterate over the fields array, using each one to set the  key and value
//  on our respone object.
fields.forEach(item => { respone[item.label] = item.type} );

// Let's see how it looks!
console.log(respone);
Run Code Online (Sandbox Code Playgroud)

编辑:根据评论,使用它并没有真正意义.map()- 其目的是根据数组值返回一个新数组,通常是转换后的数据。在这种情况下,使用更有意义Array.forEach(...),代码已修改为此。

  • 这是关于意图。`.map()` 旨在返回一个与原始数组长度相同、具有相同或修改过的数据的新数组。另一方面,`.forEach()` 旨在简单地迭代该数组并在每次迭代时做一些事情。 (2认同)