【发布时间】:2021-04-20 14:43:28
【问题描述】:
我有以下 3 个带有数据的对象。
我想在里面找到const oldData.data.parameter_value = b and oldData.data.label_value =b
const newData.selected_parameter_value.的每个对象
如果值存在于 newData 数组中,则将所有 newData.selected_parameter_value.parameter_value = b and newData.selected_parameter_value.label_value = b 替换为 const updatedData.data.parameter_value = red and const updatedData.data.label_value = red。
前任 -
const oldData = {
"action": "edit",
"data": {
"parameter_value": "b",
"label_value": "b"
}
};
const updatedData = {
"action": "update",
"data": {
"parameter_value": "red",
"label_value": "red"
}
};
const newData = [
{
"context": [],
"selected_parameter_value": [
{
"label_value": "a",
"parameter_value": "a"
},
{
"label_value": "b",
"parameter_value": "b"
}
]
},
{
"context": [],
"selected_parameter_value": [
{
"label_value": "b",
"parameter_value": "b"
}
]
}
];
预期输出
const newData = [
{
"context": [],
"selected_parameter_value": [
{
"label_value": "a",
"parameter_value": "a"
},
{
"label_value": "red",
"parameter_value": "red"
}
]
},
{
"context": [],
"selected_parameter_value": [
{
"label_value": "red",
"parameter_value": "red"
}
]
}
];
谁能帮我做这件事。
我尝试了下面的代码,但我不知道如何更新 newData 中的匹配对象并保持所有对象不变。
editContextData(data) {
if (data.action === 'edit') {
this.oldData = data;
}
if (data.action === 'update') {
const oldData = this.oldData;
const updatedData = this.newData;
const newData = this.selectedParameterContext.records;
const newSelectedParameterContext = {
'records': []
};
newData.forEach(function (record) {
const newSelectedParameterValues = [];
record.selected_parameter_value.forEach(function (parameter) {
if(parameter.parameter_value === oldData.data.parameter_value && parameter.label_value === oldData.data.label_value){
// here i want to update object and push new values in array.
newSelectedParameterValues.push(updatedData);
}
});
newSelectedParameterContext.records.push({ 'selected_parameter_value': newSelectedParameterValues });
});
console.log(newSelectedParameterContext,"rrr");
this.selectedParameterContext = newSelectedParameterContext;
}
}
【问题讨论】:
-
你能提供一个代码笔或任何其他可运行的例子吗?
-
无法运行代码会抛出错误。
-
上面的逻辑很容易理解..我添加了模拟数据oldData,updatedData和newData..我想在模拟newData中找到模拟oldData的键,如果可用,然后替换模拟newData的对象使用模拟更新数据。
-
我做了一些代码,但我不知道如何替换 newData 对象的值并准备新数组。
标签: javascript angular angular8