Задать вопрос
@Hastes1234

Как отфильтровать объекты в массиве по слову в строчке ключа?

Здравствуйте. Есть массив с объектами. Как отфильтровать(убрать) лишние объекты c помощью .filter, если в значении status есть слово "maybe"? Спасибо!

[
{ city: "Moscow",
number: 123,
status: "maybe ok"
} , 
{ city: "Moscow",
number: 123,
status: "ok"
},
{ city: "Moscow",
number: 123,
status: "maybe"
},
]
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 4
sergiks
@sergiks Куратор тега JavaScript
♬♬
arr.filter(n => !~n.status.indexOf("maybe"))
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Чего не надо:

const key = 'status';
const value = 'maybe';

Фильтруем:

const newArr = arr.filter(n => !n[key].includes(value));

Если же и правда слово, тогда регулярные выражения используйте или предварительно режьте строку на куски:

const reg = RegExp(`\\b${value}\\b`);
const newArr = arr.filter(n => !reg.test(n[key]));

// или

const newArr = arr.filter(function(n) {
  return !n[key].match(this);
}, RegExp(`(^| )${value}( |$)`));

// или

const newArr = arr.filter(n => !n[key].split(' ').includes(value));
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
arr.filter(n => n.status.includes("maybe"))
Ответ написан
Комментировать
arr.filter(n => !n.status.match(/maybe/g))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы