在javascript中匹配对象并赋值



你可以看到,如果你检查数据源它有一个键isEdit和一个布尔值。我们将数据源值与tempValues进行比较,因为您可以看到数据源中的列值与键在tempValues上。比较之后,我们检查数据源isEdit的值是true还是fals

如果isEdit的值为true,则从tempValues.dealIdleDetailsForFinanceDto获取值,例如NVB的isEdit值为true,则NVB的值从tempValues.dealIdleDetailsForFinanceDto为99,否则为20

检查最终输出值。

请参阅最终输出以进行比较。谢谢。

#数据1

dataSouce = [
{
"name": "NVB",
"value": 0,
"financeValue": 0,
"column": "nvb",
"isEdit": true
},
{
"name": "ROU",
"value": 0,
"financeValue": 0,
"column": "rou",
"isEdit": false
},
{
"name": "Net Present Value",
"value": 0,
"financeValue": 0,
"column": "netPresentValue",
"isEdit": false
},
]
# tempValues

tempValues = {
"transactionId": 20,
"nvb": 20,
"rou": 100,
"netPresentValue": 50,
"dealIdleDetailsForFinanceDto": {
"nvb": 99,
"rou": 4,
"netPresentValue": 88,
}
}

#最终输出示例

[
{
"name": "NVB",
"value": 99,
"financeValue": 20,
"column": "nvb",
"isEdit": true
},
{
"name": "ROU",
"value": 100,
"financeValue": 100,
"column": "rou",
"isEdit": false
},
{
"name": "Net Present Value",
"value": 88,
"financeValue": 50,
"column": "netPresentValue",
"isEdit": true
}
]

#示例代码
const finalOutput = dataSource.map(item => {
// Look up the value in tempValues using the column property of the object
if(item.isEdit) {

}
const financeValue = tempValues[item.column];

// Return a new object with the updated value property
return {
...item,
financeValue, 
};
});

假设dataSouce[2].isEdit = true,并且这是问题中的拼写错误,那么下面的代码片段应该有所帮助。

dataSource = [
{
"name": "NVB",
"value": 0,
"financeValue": 0,
"column": "nvb",
"isEdit": true
},
{
"name": "ROU",
"value": 0,
"financeValue": 0,
"column": "rou",
"isEdit": false
},
{
"name": "Net Present Value",
"value": 0,
"financeValue": 0,
"column": "netPresentValue",
"isEdit": true
},
];
tempValues = {
"transactionId": 20,
"nvb": 20,
"rou": 100,
"netPresentValue": 50,
"dealIdleDetailsForFinanceDto": {
"nvb": 99,
"rou": 4,
"netPresentValue": 88,
}
};
const finalOutput = dataSource.map(item => {
const tempValue = tempValues[item.column];
const dealIdleDetailsValue = tempValues.dealIdleDetailsForFinanceDto[item.column];
return {
...item,
financeValue: tempValue,
value: item.isEdit ? dealIdleDetailsValue : tempValue
}
});
console.log(finalOutput);

最新更新