【问题标题】:Object is not been read node.js对象未被读取 node.js
【发布时间】:2018-10-08 12:14:40
【问题描述】:

我反对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"
            }
        ]
    ]
}

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

结果是[]

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

【问题讨论】:

  • 它是双嵌套的,你应该先把它展平。

标签: javascript arrays node.js object filter


【解决方案1】:

您可以使用[].concat.apply([], db_parsed.data) 过滤对象数组:

const 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"}]]};
const result = [].concat.apply([], db_parsed.data).filter(obj => obj.age === 22);

console.log(result);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      相关资源
      最近更新 更多