gpt4 book ai didi

javascript - 取两个数组的差异并制作一个新数组

转载 作者:行者123 更新时间:2023-11-30 12:22:22 31 4
gpt4 key购买 nike

我需要这个函数来比较两个数组并返回一个新数组,该数组只包含两个数组不共有的元素。我写了下面的代码:

function diff(arr1, arr2) {

var newArray = [];

for (var i=0;i<arr1.length;i++){
for (var j=0;j<arr2.length;j++){
if (arr1[i]===arr2[j]){

arr1.splice(i,1);
arr2.splice(j,1);
}
}
}
newArray = arr1.concat(arr2);
return newArray;
}

diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);

但它返回 [2,2,4] 而不是 [4]

此外,我尝试使用 filter 方法编写它:

function diff(arr1, arr2) {

var newArray = [];

function compare(x){
for (var i = 0;i<arr2.length;i++){
return x != arr2[i];
}
}
newArray = arr1.filter(compare);
return newArray;
}

diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);

而且这也不适用于每个实例。我还需要能够将数组与数字和字符串进行比较。它必须在 javascript 中,不能使用 jquery。

最佳答案

你可以试试:

function diff(arr1, arr2) {

var tmp = [];
var newArray = [];

for (var i = 0; i < arr1.length; i++) {
for (var j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
arr1[i] = arr2[j] = null;
}
}
}
tmp = arr1.concat(arr2);
for (var i = 0; i < tmp.length; i++) {
if (tmp[i] !==null) {
newArray.push(tmp[i]);
}
}
return newArray;
}

console.log(diff([0,1,2], [1,2]));//output: [0]

关于javascript - 取两个数组的差异并制作一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30586079/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com