javascript - 我可以使用forEach使数组的每个元素成为新对象吗?

我用一个循环创建了一个包含许多元素的数组:

myArray = [c1, c2, c3...]


现在,我想将每个元素变成一个对象并分配不同的键值:

c1 = {image = path, value = number)


我尝试运行 forEach(),但找不到正确的方法,但未能成功找到答案。

我的猜测是:

myArray.forEach(function() {
  let name = {
    image = path,
    value = number,
  }
  return name;
});


但是日志中的元素没有任何变化。

任何可以帮助我的问题的帮助或链接。第一次在这里编码。

更新:当我首先创建带有循环的数组时,一个更简单的解决方案是.push对象的所有键和值。

array.push({image:pathx,value:numberx})

最佳答案

从理论上讲,您可以推送到新数组,但这是Array#map的确切用例。 Array#map将旧值映射到新值。回调返回的对象是新对象,返回的数组是包含新对象的新数组。

从语义上讲,Array#forEach是要遍历数组中的每个元素,并可能执行有副作用的事情(可能包括推入另一个数组)。但是使用Array#map,它专门用于将旧的数组值转换为新的值。使用专门设计的代码,因为它可以向其他阅读您代码的人传达清晰的信息。

const newArray = myArray.map(({ path, number }) => ({
  image: path,
  value: number
}));