Объект не был прочитан node.js - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть и объект 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))

результат []

Почему? Что мне не хватает? Как это исправить?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Можно сделать [].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);
0 голосов
/ 27 апреля 2018

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...