То, как вы это делаете, выглядит следующим образом
array.filter(element => valuearray.includes(parseInt(element.id)))
Это приведет к тому, что после ввода данных, которые вы привели в качестве примера, в следующем массиве:
[{ id : '123', nama : 'name one' }, { id : '456', nama : 'name one' }]
Я вижу несколько ответов здесь, используя ~
оператор.Если вам интересно, почему это так, то это потому, что indexOf
может быть 0
.Если результат функции фильтрации равен 0
, элемент будет отфильтрован, поскольку это ложное значение.~
предотвращает это.
Этот должен дать вам больше информации, если вы заинтересованы в ~
.
Редактировать:
Как уже упоминалось @str, valuearray
имеет числа, в то время как id
элементов в array
являются строками.Вот почему мы используем parseInt
, чтобы оба условия сравнения (функция includes
) были одного типа.