【发布时间】:2015-06-02 01:52:05
【问题描述】:
我需要这个函数来比较两个数组并返回一个新数组,该数组只包含两个数组不共有的元素。我写了以下代码:
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]
另外,我尝试使用过滤方法编写它:
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。
【问题讨论】:
-
“它必须在 javascript 中,没有 jquery。” jQuery 是 JavaScript。然而,jQuery 的领域是 DOM 操作,而不是处理集合。
-
你的实现很奇怪。如果在纸上为您提供了 2 个数字列表并且您需要生成第三个差异列表,您将如何手动执行此操作?
-
数字和字符串?意思是你想保留类型?
标签: javascript