如何将值数组映射到对象数组

时间:2019-04-04 09:10:43

标签: javascript arrays

我想将以下数组转换为对象数组:

let arr = ['tree', 'apple', 'orange']

arr = [
  {value: tree},
  {value: apple},
  {value: orange}
]

到目前为止,我的解决方案是:

let temp = []; 
arr.forEach(x => {   
   temp.push({value: p}); 
});

arr = temp

我该如何使用array.map()功能解决此问题,以便我可以调用

arr.map()...

5 个答案:

答案 0 :(得分:3)

您可以使用Array.prototype.map()这样操作:

const arr = ['tree', 'apple', 'orange'];

const result = arr.map(value => ({ value }));

console.log(result);

或更明确地说,没有隐式的返回值或对象简写符号:

const arr = ['tree', 'apple', 'orange'];

const result = arr.map(x => {
  return { value: x };
});

console.log(result);

答案 1 :(得分:2)

.map回调返回的内容将是该索引处数组中的新项-因此,只需将temp.push(替换为return

let arr = ['tree', 'apple', 'orange'];
arr = arr.map(x => {
  return { value: x };
});
console.log(arr);

或者,为了更简洁起见,从箭头函数隐式返回:

let arr = ['tree', 'apple', 'orange'];
arr = arr.map(x => ({ value: x }));
console.log(arr);

(为清晰起见,您可以考虑覆盖arr-分配一个新的变量名,如果可以的话,arr可以是{ {1}})

答案 2 :(得分:0)

arr.map(p => 
 {   
   return {value: p}; 
 })

答案 3 :(得分:0)

map()方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

您可以在arr上使用它来获取更新的数组:

let arr = ['tree', 'apple', 'orange'];
let arrOfObjects = arr.map( el => { return { value: el } })

console.log(arrOfObjects);

答案 4 :(得分:0)

地图是纯的,它不会更改目标或父数组。 Map会创建自己的数组副本,并通过对复制的数组进行操作来返回结果。

let arr = ['tree', 'apple', 'orange'];
 
console.log(arr.map(x => ({ value: x })));