Отфильтровать элементы словаря с определенным ключом во вложенном списке - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть вложенный список, который выглядит следующим образом:

var data = [[
    {item: 'top_X', pos:1},
    {name: 'person1', value: 1},
    {name: 'person2', value: 1}
],[
    {item: 'top_Y', pos:1},
    {name: 'person1', value: 2},
    {name: 'person2', value: 2}
],[
    {item: 'top_Z', pos:1},
    {name: 'person1', value: 1}
] ];

в js, я пытаюсь использовать лямбда-функцию, которая отфильтровывает каждый dictionary в списке data и возвращает ту же структуру, но без dictionary, где присутствует ключ item.

 all = data.map(x => {
        return x; // returns the whole list
    });

    //
    fileredOutList = data.map(x => {
       return x.filter  ?? ..
    }); // Expected output list: 
 //      data = [[{name: 'person1', value: 1},
 //              {name: 'person2', value: 1}],
 //             [{name: 'person1', value: 2},
 //              {name: 'person2', value: 2}],
 //             [{name: 'person1', value: 1}]]


fileredOutListCount = data.map(x => {
   //  return x.filter  ?? .. .count()
   // return count elements after filter --> 3
});

Как построить встроенную функцию для фильтра в подсписке и вернуть другой (отфильтрованный) список и / или count после фильтрации.

Извините за простой вопрос, я новичок в JS и застрял в этой простой задаче.

1 Ответ

1 голос
/ 03 ноября 2019

Вы можете проверить, используя Object.prototype.hasOwnProperty для фильтрации объекта, обладающего свойством item.

var data = [[
    {item: 'top_X', pos:1},
    {name: 'person1', value: 1},
    {name: 'person2', value: 1}
],[
    {item: 'top_Y', pos:1},
    {name: 'person1', value: 2},
    {name: 'person2', value: 2}
],[
    {item: 'top_Z', pos:1},
    {name: 'person1', value: 1}
] ];


let out = data.map(arr => arr.filter(e => !e.hasOwnProperty('item')));
console.log(out)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...