Найти все вхождения каждого элемента массива в другом массиве в Javascript



У меня есть массив здесь:



a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7]


И еще один,



b = [1, 2, 5]


Я хочу найти все вхождения каждого элемента массива b в a. то есть мне нужен результирующий массив, подобный этому:



result = [1, 1, 2, 5, 5]


Я просматривал Документы Лодаша, чтобы найти любую комбинацию методов, которая дала бы мне результат, но не смог этого сделать. Кто-нибудь знает, как я могу получить массив result? Я предпочитаю использовать очень лаконичное решение (т. е. без слишком большого количества петель и т. д.), и обычно Lodash лучше всего для этого, но и другие решения тоже хороши.

715   3  

3 ответов:

Вы просто фильтруете первый массив на основе второго массива

var a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7];
var b = [1, 2, 5];

var result = a.filter( z => b.indexOf(z) !== -1 );

console.log(result);

Можно использовать циклы for..of для итерации b проверить, равен ли элемент a текущему элементу в b

let a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7];

let b = [1, 2, 5];

let result = [];

for (let prop of b) {
  for (let el of a) {
    if (el === prop) result = [...result, el]
  }
}

console.log(result);

Если вы действительно хотите использовать _, вы можете использовать 2 _.разница зовет.

var a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7];
var b = [1, 2, 5];

var result = _.difference(a,_.difference(a,b));

console.log(result);
<script src="https://cdn.jsdelivr.net/lodash/4.16.4/lodash.min.js"></script>

Comments

    Ничего не найдено.