javascript - 如何在 Javascript 中迭代嵌套对象数组

标签 javascript jquery arrays object

如何在 Javascipt 中遍历嵌套的对象数组?我有一个名为 obj 的对象。我想检索 increditoutbank 的对象。

// 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/

相关文章:

php - 如何使用 PHP 获取数据表

javascript - 找不到更改行颜色的方法

javascript - Kendo UI 树列表和 Angular - 如何确定它是否已完全加载?

php - 相对较大的 JSON 文件的服务器端和客户端缓存

Jquery - 如何动态调整 iframe 的高度?

php - 如何在 PHP 中处理大量数据

java - 增加索引后如何递归添加?

php - 在数组迭代期间检查当前元素是否是最后一个元素

javascript - 如何在 FIRESTORE 中的文档中输入多个数据

javascript - 无法在 JSX 中渲染 bool 值?