Reputation: 1821
I have an array here:
a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7]
and another,
b = [1, 2, 5]
I want to find all occurrences of each element of array b
in a
. i.e. I want a resultant array like this:
result = [1, 1, 2, 5, 5]
I was going through the Lodash docs to find any combination of methods which would give me the result, but haven't managed to do so. Does anyone know how I can get the result
array? I prefer to use a very concise solution (i.e. without too many loops etc), and usually Lodash is best for that, but other solutions are also fine.
Upvotes: 3
Views: 3831
Reputation: 12717
If you really wanted to use _, you could use 2 _.difference calls.
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>
Upvotes: 1
Reputation: 1
You can use for..of
loops to iterate b
check if element of a
is equal to current element in 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);
Upvotes: 1
Reputation: 318182
You'd just filter the first array based on the second array
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);
Upvotes: 7