这个问题在这里已有答案:
如何使用数组2中的所有元素检查数组1的第一个元素,然后使用JS for循环重复数组2中的第二个元素?还是JS方法?
var array1 = ['1','2','3','4','5','6','7']
var array2 = ['43','24','35','42','55','63','1']
因此,在上面的代码中,我们将检查array1中的所有元素对43,然后检查数组1中的所有元素对24等。
输出将从array1中删除与数组2中的任何实例匹配的任何实例,并将其添加到结尾。所以输出就是
array1 = ['2','3','4','5','6','7', '1']
你可以用简单的循环做到这一点,或者你可以使用lodash库:)
_.difference([2, 1], [2, 3]);
// => [1]
你可以在第一个数组上使用forEach
来做到这一点。
例如:
array1.forEach(elem1 => {
var index = array2.indexOf(elem1);
if (index != -1) {
array2.splice(index, 1);
} else {
array2.push(elem1);
}
});
在此示例中,您将遍历array1
并搜索每个array1元素的位置。如果找到一个,那么它将被删除。
您可以使用array#reduce
将array1
的值分离为唯一数组和重复数组,然后将array#concat
分离。
var array1 = ['1','2','3','4','5','6','7'],
array2 = ['43','24','35','42','55','63','1'],
set = new Set(array2);
var result = array1.reduce((r,v) => (set.has(v) ? r.repeating.push(v) : r.unique.push(v), r), {unique:[], repeating:[]});
var output = result.unique.concat(result.repeating);
console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您还可以使用array#includes
检查其他数组中的值。
var array1 = ['1','2','3','4','5','6','7'],
array2 = ['43','24','35','42','55','63','1'];
var result = array1.reduce((r,v) => (array2.includes(v) ? r.repeating.push(v) : r.unique.push(v), r), {unique:[], repeating:[]});
var output = result.unique.concat(result.repeating);
console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0; }