user3033194
user3033194

Reputation: 1821

Find all occurrences of each element of an array in another array in Javascript

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

Answers (3)

Barbara Laird
Barbara Laird

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

guest271314
guest271314

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

adeneo
adeneo

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

Related Questions