如何在javascript中查找和替换深层嵌套数组对象
我有一个示例对象名称obj
并通过id, in , and out
(obj_res)过滤了该对象。如何在javascript中使用id fund
中的obj_res
查找和更新特定的obj,如预期输出中所示
我被困了需要帮助如何在javascript中做
var obj_res = getValue("bank", "bank", "trans");
function getValue(send, receive, id){
const temp = obj.map(e => Object.entries(e).map(([k, val]) => val)).flat(3)
result_obj = temp.filter(x=>x.in ==send && && x=>x.out ==receive && x.id == id);
return result_obj;}
//whole object input
var obj = [{
"btob": [{
"id": "trans",
"in": "bank",
"out": "bank",
"value": 10,
},{
"id": "fund",
"in": "bank",
"out": "bank",
"value": 10
}],
"ctob": [{
"id": "trans",
"in": "credit",
"out": "bank",
"value": 20
},{
"id": "fund",
"in": "credit",
"out": "bank",
"value": 10
}]
}]
//resultant obj after filter by id , in ,out
var obj_res =[{
"id": "trans",
"in": "bank",
"out": "bank",
"value": 10
},{
"id": "fund",
"in": "bank",
"out": "bank",
"value": 10
}]
Expected Output:
res=[{
"id": "trans",
"in": "bank",
"out": "bank",
"value": 10
},{
"id": "fund",
"in": "credit",
"out": "bank",
"value": 10
}]
如果您认为只有一个,请使用find()
获取第一个实例。否则使用filter()
并循环遍历每个以修改每个匹配对象的属性
var obj_res = [{
"id": "trans",
"in": "bank",
"out": "bank",
"value": 10
}, {
"id": "fund",
"in": "bank",
"out": "bank",
"value": 10
}]
var fund = obj_res.find(({id}) => id === 'fund'); // returns array element or false
if (fund) {
fund.in = 'XXXXX';
console.log(obj_res)
}