我有两个对象数组,看起来像这样:
const data = [
{
id: 1,
condition: 1,
helpers: [{id: 1, condition: null}, {id: 2, condition: 2}]
},
{
id: 2,
condition: null,
helpers: [{id: 1, condition: 1}, {id: 2, condition: null}]
}
]
const conds = [
{
id: 1,
conditions: {
rules: ['test', 'foo']
}
},
{
id: 2,
conditions: {
rules: ['#hashtag', 'foo']
}
}
]
我试图实现的是,我希望将data
数组的condition
值替换为conds
数组中的值。
我的解决方案看起来不太好用,如下所示:
let newArray = [];
data.forEach(obj => {
conds.forEach(cond => {
if (obj.condition) {
if (obj.condition === cond.id) {
obj.condition = cond.conditions.rules;
newArray.push(obj);
}
} else {
obj.helpers.forEach(h => {
if (h.condition && h.condition === cond.id) {
h.condition = cond.conditions.rules;
newArray.push(obj);
}
});
}
})
});
我觉得我已经非常接近解决方案了,因为我的newArray
包含了changes属性,但不是helpers中的最后一项,而condition
属性仍然是2。
输出应如下所示:
[
{
id: 1
condition: ['test', 'foo'],
helpers: [{id: 1, condition: null}, {id: 2, condition: ['#hashtag', 'foo']}]
},
{
id: 2
condition: null,
helpers: [{id: 1, condition: ['test', 'foo']}, {id: 2, condition: null}]
},
]
这里我漏掉了什么?
https://stackoverflow.com/questions/53011255
复制相似问题