如何使用数组2中的所有元素检查数组1的第一个元素,然后使用JS for循环重复数组2中的第二个元素?还是JS方法? [重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

如何使用数组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']
javascript
3个回答
0
投票

你可以用简单的循环做到这一点,或者你可以使用lodash库:)

_.difference([2, 1], [2, 3]);

// => [1]

0
投票

你可以在第一个数组上使用forEach来做到这一点。

例如:

array1.forEach(elem1 => {
  var index = array2.indexOf(elem1);
  if (index != -1) {
    array2.splice(index, 1);
  } else {
    array2.push(elem1);
  }
});

在此示例中,您将遍历array1并搜索每个array1元素的位置。如果找到一个,那么它将被删除。


0
投票

您可以使用array#reducearray1的值分离为唯一数组和重复数组,然后将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; }
© www.soinside.com 2019 - 2024. All rights reserved.