3

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.

3 Answers 3

7

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);

Sign up to request clarification or add additional context in comments.

Comments

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);

1 Comment

Thanks a lot, but I really want to make it concise.:)
1

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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.