我在常量行中有以下数据。
const rows = {
"selected_parameter_value": [
{
"parameter_value": "a",
"label_value": "a"
},
{
"parameter_value": "d",
"label_value": "d"
}
]
};
我想将 const rows.selected_parameter_value
的每个对象与 parameter_value
中的 label_value
和 this.selectedParameterContext.records[0].selected_parameter_value
进行比较。
并从 this.selectedParameterContext.records[0].selected_parameter_value
中删除那些在 const rows.selected_parameter_value
中不存在的对象
例如 -
在const rows.selected_parameter_value
中,只有a
和d
对象存在,b
和c
不存在。
因此从this.selectedParameterContext.records[0].selected_parameter_value
中删除参数和标签值为b和c的对象。
this.selectedParameterContext = {
'records': [
{
'selected_parameter_value': [{
'parameter_value': 'a',
'label_value': 'a'
},
{
'parameter_value': 'b',
'label_value': 'b',
}]
},
{
'selected_parameter_value': [{
'parameter_value': 'c',
'label_value': 'c'
},
{
'parameter_value': 'd',
'label_value': 'd',
}]
}]
};
预期产出
this.selectedParameterContext = {
'records': [
{
'selected_parameter_value': [{
'parameter_value': 'a',
'label_value': 'a'
}]
},
{
'selected_parameter_value': [
{
'parameter_value': 'd',
'label_value': 'd',
}]
}]
};
下面的代码
deleteContextData(rows ) {
const paramArray = rows.selected_parameter_value;
const newArrayData = this.selectedParameterContext.records[0].selected_parameter_value;
const removeMatchingData = (paramArray, toCompareWith) => {
return paramArray.filter(({ label_value }) => !toCompareWith.some(compareObj => compareObj.label_value === label_value));
}
console.log(removeMatchingData(paramArray, newArrayData),"newarray");
}
答案 0 :(得分:0)
this.selectedParameterContext.records
record.selected_parameter_value
rows.selected_parameter_value.find(...)
进行验证.splice(...)
从 this.selectedParameterContext.records
中删除项目const rows = {
"selected_parameter_value": [
{
"parameter_value": "a",
"label_value": "a"
},
{
"parameter_value": "d",
"label_value": "d"
}
]
};
const selectedParameterContext = {
'records': [
{
'selected_parameter_value': [
{
'parameter_value': 'a',
'label_value': 'a'
},
{
'parameter_value': 'b',
'label_value': 'b',
}
]
},
{
'selected_parameter_value': [
{
'parameter_value': 'c',
'label_value': 'c'
},
{
'parameter_value': 'd',
'label_value': 'd',
}
]
}
]
};
selectedParameterContext.records.forEach(function(record, recordIndex) {
record.selected_parameter_value.forEach(function(parameter, parameterIndex) {
const isValid = rows.selected_parameter_value.find(function(item) {
return parameter.parameter_value === item.parameter_value && parameter.label_value === item.label_value;
});
if (!isValid) {
selectedParameterContext.records[recordIndex].selected_parameter_value.splice(parameterIndex, 1);
}
});
});
console.log('selectedParameterContext: ', selectedParameterContext);
const rows = {
"selected_parameter_value": [
{
"parameter_value": "a",
"label_value": "a"
},
{
"parameter_value": "d",
"label_value": "d"
}
]
};
const selectedParameterContext = {
'records': [
{
'selected_parameter_value': [
{
'parameter_value': 'a',
'label_value': 'a'
},
{
'parameter_value': 'b',
'label_value': 'b',
}
]
},
{
'selected_parameter_value': [
{
'parameter_value': 'c',
'label_value': 'c'
},
{
'parameter_value': 'd',
'label_value': 'd',
}
]
}
]
};
// Building new array variable
const newSelectedParameterContext = {
'records': []
};
selectedParameterContext.records.forEach(function(record, recordIndex) {
const newSelectedParameterValues = [];
record.selected_parameter_value.forEach(function(parameter, parameterIndex) {
const isValid = rows.selected_parameter_value.find(function(item) {
return parameter.parameter_value === item.parameter_value && parameter.label_value === item.label_value;
});
if (isValid) {
newSelectedParameterValues.push(parameter);
}
});
newSelectedParameterContext.records.push({'selected_parameter_value': newSelectedParameterValues});
});
console.log('newSelectedParameterContext: ', newSelectedParameterContext);
答案 1 :(得分:0)
您的数据初始化为 const
。这意味着变量是不可变的。所以我建议你这样重建。
const selectedParameterContext = {
'records': [
{
'selected_parameter_value': [{
'parameter_value': 'a',
'label_value': 'a'
},
{
'parameter_value': 'b',
'label_value': 'b',
}]
},
{
'selected_parameter_value': [{
'parameter_value': 'c',
'label_value': 'c'
},
{
'parameter_value': 'd',
'label_value': 'd',
}]
}]
};
var selectedParameterContext2 = {
'records': []
}
selectedParameterContext.records.forEach(e=>{
var records = [];
e.selected_parameter_value.forEach(f=>{
if(f.parameter_value==='a'||f.parameter_value==='d')
records.push(f)
})
selectedParameterContext2.records.push({'selected_parameter_value': records})
})
console.log(selectedParameterContext2)