对象未被读取node.js

Rub*_*edo 1 javascript arrays object filter node.js

我有和反对 db_parsed

我跑的时候 console.log(JSON.stringify(db_parsed, null, 4))

结果是:

{
    "data": [
        [
            {
                "name": "Me",
                "age": 23,
                "sex": "M"
            },
            {
                "name": "Wonderwoman",
                "age": 22,
                "sex": "F"
            }
        ],
        [
            {
                "name": "ALbert The Man",
                "age": 22,
                "sex": "M"
            }
        ],
        [
            {
                "name": "Leonard Johnson",
                "age": 23,
                "sex": "M"
            }
        ]
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是当我跑 console.log(db_parsed.data.filter(obj => obj.age === 22))

结果是 []

为什么?我错过了什么?我该如何解决?

Que*_*tin 5

db_parsed.data是一个包含数组的数组.

第二级数组包含对象.

您的过滤器代码正在尝试处理这些对象并直接在内部db_parsed.data而不是内部db_parsed.data[0],db_parsed.data[1]并且db_parsed.data[2].

您可以使用reduce将所有第二级数组连接成一个,然后对其进行过滤.

var db_parsed = {
  "data": [
    [{
        "name": "Me",
        "age": 23,
        "sex": "M"
      },
      {
        "name": "Wonderwoman",
        "age": 22,
        "sex": "F"
      }
    ],
    [{
      "name": "ALbert The Man",
      "age": 22,
      "sex": "M"
    }],
    [{
      "name": "Leonard Johnson",
      "age": 23,
      "sex": "M"
    }]
  ]
};

console.log(db_parsed.data.reduce((a,b) => a.concat(b), []).filter(obj => obj.age === 22))
Run Code Online (Sandbox Code Playgroud)