![](/img/trans.png)
[英]How can I pull out two elements of every object in an array of objects and make a new one
[英]can I use forEach to make every element of an array a new object?
我用一个循环创建了一个包含许多元素的数组:
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})
可以 ,但最好使用简单的for
循环:
for (let i = 0; i < myArray.length; ++i) {
let entry = myArray[i];
myArray[i] = {image: entry.path, value: entry.number};
}
或使用map
创建一个新数组。
newArray = myArray.map(entry => ({image: entry.path, value: entry.number}));
或者,如果您更喜欢非箭头功能:
newArray = myArray.map(function(entry) {
return {image: entry.path, value: entry.number};
});
从理论上讲,您可以推送到新数组,但这是 Array#map
的确切用例 。 Array#map
将旧值映射到新值 。 回调返回的对象是新对象,返回的数组是包含新对象的新数组。
从语义上讲, Array#forEach
明确地遍历数组中的每个元素,并可能执行一些有副作用的事情(可能包括推入另一个数组)。 但是使用Array#map
,它专门用于将旧的数组值转换为新的值。 使用专门设计的代码,因为它可以向其他阅读您的代码的人传达清晰的信息。
const newArray = myArray.map(({ path, number }) => ({
image: path,
value: number
}));
Array#map将旧值映射到新值。 您可能需要使用以下功能而不是箭头功能,因为IE中不支持它。 我只是在对象中添加了伪数据,您可以更改它。
myArray = ["c1", "c2", "c3"]
myArray = myArray.map(function(elem) {
return {"image":"path"+elem,"value":"value"+elem};
});
console.log(myArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.