如何在 Javascipt 中遍历嵌套的对象数组?我有一个名为 obj
的对象。我想检索 in
是 credit
和 out
是 bank
的对象。
// I have tried using filter but returns empty array
const s = obj.filter(function(t){
return t.in == "credit" && t.out == "bank";
})
console.log(s);
这是数据:
var obj = [{
"btob": [{
"id": "trans",
"in": "bank",
"out": "bank",
"value": 10
}],
"ctob": [{
"id": "trans",
"in": "credit",
"out": "bank",
"value": 20
}],
"dtob": [{
"id": "trans",
"in": "debit",
"out": "bank",
"value": 30
}]
}, {
"btob": [{
"id": "fund",
"in": "bank",
"out": "bank",
"value": 10
}],
"ctob": [{
"id": "fund",
"in": "credit",
"out": "bank",
"value": 10
}],
"dtob": [{
"id": "fund",
"in": "debit",
"out": "bank",
"value": 30
}]
}]
预期输出:
[{
"id": "trans",
"in": "credit",
"out": "bank",
"value": 20
},
{
"id": "fund",
"in": "credit",
"out": "bank",
"value": 10
}]
最佳答案
这是一个函数式风格的解决方案:
data.flatMap(obj => Object.values(obj).flatMap(arr =>
arr.filter(t => t.in === "credit" && t.out === "bank")
));
const data = [{"btob": [{"id": "trans","in": "bank","out": "bank","value": 10}],"ctob": [{"id": "trans","in": "credit","out": "bank","value": 20}],"dtob": [{"id": "trans","in": "debit","out": "bank","value": 30}]}, {"btob": [{"id": "fund","in": "bank","out": "bank","value": 10}],"ctob": [{"id": "fund","in": "credit","out": "bank","value": 10}],"dtob": [{"id": "fund","in": "debit","out": "bank","value": 30}]}];
const result = data.flatMap(obj => Object.values(obj).flatMap(arr => arr.filter(t => t.in === "credit" && t.out === "bank")));
console.log(result);
但是就像评论一样,如果你的对象键“ctob”意味着“credit to bank ",则无需测试嵌套的“信用”和“银行”属性值。
关于javascript - 如何在 Javascript 中迭代嵌套对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55490590/