我有一个对象数组,分析也是一个对象数组。
const products = [
{
id: '111',
analysis: [
{ id: 1, value: 51 },
{ id: 2, value: 40 },
{ id: 3, value: 25 }
]
},
{
id: '222',
analysis: [
{ id: 1, value: 77 },
{ id: 2, value: 99 },
{ id: 3, value: 22 }
]
}
]
我是不变的助手。我有一个数组operations
,表示如何更新products
数组。
const operations = [
{ id: '111', analysisId: 1, value: 10 },
{ id: '111', analysisId: 3, value: 4 },
{ id: '222', analysisId: 3, value: 88 }
];
所以这意味着我希望找到id = 111
的对象,然后找到analysisId = 1
,最后将值从51更新为10.然后我需要对其余的事情做同样的事情2次操作。我不想改变products
数组。有人会帮助我吗?谢谢!
答案 0 :(得分:1)
据我所知,只有这样做才能在进行更新之前找到索引
operations.map(operation => {
var indexOfProduct = products.findIndex(x => x.id === operation.id);
var indexOfAnalysis = products[indexOfProduct].analysis.findIndex(a => a.id === operation.analysisId);
products = update(products, {
[indexOfProduct]: {
analysis: {
[indexOfAnalysis]: {
value: {$set: operation.value}
}
}
}
})
});