[英]Using the spread operator on an array with objects
我有一个 Javascript object 看起来像这样:
{
key1: {
itemId: "someId",
myValue: "value"
},
key2: {
itemId: "someId2",
myValue: "value2"
}
}
我还有一个数组,我将这样的项目推送到其中:
myArr.push({[item.itemId] : anotherDefinedObject}); //inside a loop on items
然后我想将我推送到数组的所有项目加入到第一个 object 中。 这意味着,例如,如果项目 id 是“key3”和“key4”,我会得到这个 object:
{
key1: {
itemId: "someId",
myValue: "value"
},
key2: {
itemId: "someId2",
myValue: "value2"
},
key3: { //the object that was added },
key4: { //the object that was added }
}
我尝试使用扩展运算符来做到这一点:
return {...object, ...myArr}
但后来我没有得到我需要的东西,而是得到“0”、“1”等新 object 中的键(因为 0,1 等是数组的键)。
如何以我想要的方式连接 object 和数组?
const obj = {key1: 1};
const myArr = [{key2: 2}];
myArr.forEach(val => Object.assign(obj, val));
console.log(obj); // {key1: 1, key2: 2}
而是我的
myArray
创建myObject
。
myObject = {}
myObject[item.itemId] = anotherDefinedObject;
然后
return {...object, ...myObject}
使用扩展运算符无法实现您在此处实现的目标; 它完全按预期工作,并且由于 JS 不允许运算符重载,因此无法更改功能。 最好的办法是遍历 myArr 并使用您自己的代码将数组中的每个项目添加到 object。
PS 正如评论所暗示的,将来您应该提供更多输入示例,当前的 output 和您的预期 output; 没有它很难理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.