sinneren
@sinneren

Как отфильтровать массив объектов по значениям из имеющегося объекта?

Дан JSON, в котором массив объектов:
[ {
    "name": string,
    "type": string,
    "price": number
},
...
]

И некий объект, который содержит, пусть, одинаковые (хотя хотелось бы и без этого) ключи сопоставимые с объектами. Но не все, разумеется, только часть.

Хотелось бы из тех, что есть в объекте значений, найти в JSONе такие объекты и вывести. То есть обычный фильтр. Но как сделать не понимаю. Если использовать .filter, то в value нам придёт объект. Получается, в нем нужно еще раз фильтр сделать? Но сравнение идёт же по значению, а не ключу. Какой-то Object.equal() придумать? Как-то я совсем запутался. Есть простое решение для этого? Только не JQ, можно через Npm пакет,например.
  • Вопрос задан
  • 2790 просмотров
Решения вопроса 1
search
@search
мама говорит что я особенный
Есть такой способ. Либа называетися lodash. https://lodash.com

Там это будет выглядеть вот так.

_.filter([{a: 'b', c: 'd'}, {a: 'b', k: 'p'}, {a: 'c', l: 'p'}], {a: 'b'}) // outputs [{a: 'b', c: 'd'}, {a: 'b', k: 'p'}]


В лоудеше собрано невероятно много полезных функций. От всей души советую начать ей пользоваться.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@uacasszx
let objects = [{a: true, b: 'string1'}, {a: false, b: 'string2'}, {a: false, b: 'string3'}, {a: true, b: 'string4'}, {a: false, b: 'string5'}];
objects.filter(object => (object.a === true && object.b.indexOf('string') !== -1));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
26 нояб. 2024, в 21:30
30000 руб./за проект
26 нояб. 2024, в 20:38
120000 руб./за проект
26 нояб. 2024, в 20:08
1000 руб./за проект