我试图将一个数组连接到一个对象数组中的数组(productsCategories
)。
所以,这里是productCategories
数组的样子:
[
{
id: 123,
items: [ { Obj1 }, { Obj2 } ]
},
{
id:456,
items: [ { Obj1 }, { Obj2 } ]
}
]
我有一些新的数组,例如[ { Obj3 }, { Obj4 } ]
,concat
productCategories
id = 123
对象find
。
所以要做到这一点,
我首先使用lodash的concat
找到要更新的正确对象,并使用let nextItems:any = find(productCategories, { id: payload.id });
nextItems = assign({}, nextItems, { items: nextItems.items.concat(payload.items)});
加入这两个数组:
nextItems.items
因此,productCategories
具有连接的项目数组。
但是,我现在将其添加到id
数组时遇到问题。我需要找到nextItems.id
与productCategories.items
相同的对象,然后将nextItems.items
设置为driver.Navigate().GoToUrl("http://url.here")
。
这样做的正确方法是什么?
答案 0 :(得分:2)
找到与nextItems.id
中的productCategories
匹配的对象的索引,并为其分配新的连接数组。您可以使用lodash findIndex() 方法查找与id匹配的对象的索引。
var index = _findIndex(productCategories, { id: nextItems.id });
productCategories[index].items = nextItems.items;
答案 1 :(得分:1)
您也可以使用纯JavaScript。使用ES6扩展语法,它看起来像这样:
productCategories.filter(x => x.id == payload.id)
.forEach(x => x.items.push(...payload.items));
以下是包含示例数据的代码段:
// Sample data
var productCategories = [{
id: 123,
items: [ { a: 1 }, { a: 2 } ]
}, {
id: 456,
items: [ { b: 1 }, { b: 2 } ]
}];
var payload = {
id: 123,
items: [ { c: 1 }, { c: 2 } ]
};
// Update with payload
productCategories.filter(x => x.id == payload.id)
.forEach(x => x.items.push(...payload.items));
// Show results
console.log(productCategories);
.as-console-wrapper { max-height: 100% !important; top: 0; }