Фильтрация массива на основе совпадающего значения - PullRequest
1 голос
/ 07 августа 2020

Я пытаюсь отфильтровать массив со всеми возможными совпадениями. Как я могу реализовать, пожалуйста, помогите мне.

arr = [{test: 100}, {test: 100A}, {test: 100B}, {test: 100C}, {test: 101}, {test: 101}]
// i want to filter the above array which matches 100.

I have tried.
var arr1 = arr.filter(x => x.test === 100);
console.log(arr1);
it returns only {test: 100} instead i want {test: 100}, {test: 100A}, {test: 100B}, {test: 100C}

Ответы [ 4 ]

2 голосов
/ 07 августа 2020

Предполагая, что ваши значения test на самом деле являются строками, вы можете использовать String.startsWith для фильтрации:

arr = [
  {test: '100'}, {test: '100A'}, {test: '100B'},
  {test: '100C'}, {test: '101'}, {test: '101'}
];

arr1 = arr.filter(o => o.test.startsWith('100'));
console.log(arr1);
1 голос
/ 07 августа 2020

Есть несколько ways, вы можете это сделать:

Вы можете использовать функции filter и includes вместе, чтобы узнать, соответствует ли проверка значения 100 и другие совпадающие строки.

Использование включает

let arr = [{test: '100'}, {test: '100A'}, {test: '100B'}, {test: '100C'}, {test: '101'}, {test: '101'}]

var arr1 = arr.filter(str => str.test.includes('100'));

console.log(arr1);

Вы можете использовать фильтр indexOf

Используя indexOf

let arr = [{test: '100'}, {test: '100A'}, {test: '100B'}, {test: '100C'}, {test: '101'}, {test: '101'}]

var arr1 = arr.filter(str => str.test.indexOf('100') > -1);

console.log(arr1);
0 голосов
/ 07 августа 2020

Поскольку вы используете ===, вы проверяете значение и тип exact.

Если вы хотите фильтровать по значению, сначала преобразуйте string в значение, используя parseInt, а затем сравните.

const arr = [{test: '100'}, {test: '100A'}, {test: '100B'}, {test: '100C'}, {test: '101'}, {test: '101'}]

const res = arr.filter(({test}) => parseInt(test) === 100);

console.log(res);
0 голосов
/ 07 августа 2020

попробуйте это:

var arr1 = arr.filter(x => x.test.includes(100));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...