我在这里有一个数组:
a = [1, 1, 2, 3, 4, 5, 5, 6, 7, 7]
和另一个,
b = [1, 2, 5]
我想在b
中查找数组a
的每个元素的所有出现位置。即我想要一个像这样的结果数组:
result = [1, 1, 2, 5, 5]
我正在通过Lodash docs找到可以给我结果的任何方法组合,但还没有设法这样做。有谁知道如何获得result
阵列?我更喜欢使用非常简洁的解决方案(即没有太多的循环等),通常Lodash最适合这种情况,但其他解决方案也很好。
答案 0 :(得分:5)
您只需根据第二个数组
过滤第一个数组
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 :(得分: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);
答案 2 :(得分: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>