Объект фильтра для вложенного массива (Javascript) - PullRequest
0 голосов
/ 13 июля 2020

На основе такого объекта:

var p = [
           {x: [
                 {x1: "John"}, 
               ]
           },
           {x: [
                 {x1: "Louis"},
               ]
           }
        ];

Мне нужно отфильтровать p объекты, когда x1 отличается от любого из этих значений:

var p = [
           {x: [
                 {x1: "Louis"}, 
               ]
           },
        ];

Спасибо всем вам за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 13 июля 2020

Это точно так же, как ваш вопрос с числами.

var p = [
           {x: [
                 {x1: 'John'}, 
               ]
           },
           {x: [
                 {x1: 'Louis'},
               ]
           }
        ];

const results = p.filter(val => !val.x.some(v => v.x1 === 'John'));

console.log(results);
1 голос
/ 13 июля 2020

Используйте метод filter и деструктуризацию. Проверьте условия в методе фильтрации.

var p = [{ x: [{ x1: "John" }] }, { x: [{ x1: "Louis" }] }];

const filter = (arr, item) => arr.filter(({ x: [{ x1 }] }) => x1 !== item);

console.log(filter(p, "John"));
console.log(filter(p, "Louis"));
0 голосов
/ 13 июля 2020

Я не уверен, что вы имеете в виду под фильтром, но, основываясь на моей интуиции относительно того, что вы ищете, вы могли бы использовать оператор if:

If ((p.x.x1 !== "John") && (p.x.x1 !== "Louis") {
//Your code
};
...