在Javascript中查找一个数组中每个元素在另一个数组中的所有出现次数

3

我这里有一个数组:

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

还有一个,

b = [1, 2, 5]

我想在数组 a 中找到数组 b 中每个元素的所有出现次数。也就是说,我希望得到一个类似于下面的结果数组:

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

我正在查看Lodash文档,寻找任何可以给我结果的方法组合,但是尚未成功。有人知道如何获取result数组吗?我更喜欢使用非常简洁的解决方案(即不要太多循环等),通常Lodash最适合此类情况,但其他解决方案也可以。

3个回答

7
你只需要根据第二个数组过滤第一个数组。

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


1
你可以使用 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);


非常感谢,但我真的想让它更简洁。:) - user3033194

1
如果你真的想使用 _,你可以使用 2 个 _.difference 调用。

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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接