Найти все вхождения каждого элемента массива в другом массиве в 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 лучше всего для этого, но и другие решения тоже хороши.
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