我正在尝试完成freecodecamp任务。有任务: 比较两个数组并返回一个新数组,其中只有在两个给定数组中的一个中找到的任何项,但不能同时返回两个数组。换句话说,返回两个数组的对称差异。
我知道如何使用Array.prototype.slice()
,Array.prototype.filter()
,Array.prototype.indexOf()
,Array.prototype.concat()
和其他方法解决此问题。但我想在没有方法的情况下这样做。
答案 0 :(得分:-2)
这是我如何实现它:
window.onload=function(){
var array1 = [1, 2, 3, 4, 5, 6]
var array2 = [3, 4, 5, 6, 7, 8]
var result = []
var resultCount=0;
for (var i1 = 0; i1 < array1.length; i1++) {
var comparedElement = array1[i1];
var isUnique = true;
for (var i2 = 0; i2 < array2.length; i2++) {
if (comparedElement == array2[i2]) {
isUnique = false;
break;
}
}
if (isUnique) {
result[resultCount]=comparedElement;resultCount++;
}
}
for (var i2 = 0; i2 < array2.length; i2++) {
var comparedElement = array2[i2];
var isUnique = true;
for (var i1 = 0; i1 < array1.length; i1++) {
if (comparedElement == array1[i1]) {
isUnique = false;
break;
}
}
if (isUnique) {
result[resultCount]=comparedElement;resultCount++;
}
}
console.log(result)
}
代码试图找到另一个数组中数组中的每个元素,如果找不到它,它会将它添加到结果数组中,如果没有,它就会跳过它。这可能不是解决这个问题的最有效方法。