0

目前我正在尝试使用 for..in 循环比较 2 个数组的内容,但没有成功。我熟悉如何分别获取每个数组的内容,但不知道如何匹配这些内容中的每一个。基本上,如果数组的相同索引值中的 2 个值不匹配,我想返回 false 否则继续。我最近的尝试是我尝试使用不同的变量将两个数组放在同一个 for..in 中,然后比较这些。如果有人能就此提出建议,那就太好了。

JS

var list1 = [1, 2, 3, 4, 5, 6];
var list2 = [1, 2, 3, 4, 5, 'e'];

var i, j;
for (i in list1 && j in list2) {

    if (list1[i] !== list2[j]) {
        return false
    } else {
        return true
    }
}

/*for ( j in list2 ) {
console.log( list2[j] )        
}*/​
4

4 回答 4

5

使用普通的 for 循环对数组元素进行迭代:

if (list1.length != list2.length) {
    // Different length, cannot be equal
    return false;
}

// Check if there is a mismatch
for (var i = 0; i < list1.length; i++) {
    if (list1[i] !== list2[i]) {
        return false; // Return here, because we don't need to compare the rest
    }
}

return true;
于 2012-06-11T07:04:02.010 回答
2
var i, l = list1.length;

for( i = 0; i < l; ++i ) {
    if( list1[i] !== list2[i] ) {
        return false; //Compare one by one
    }
}

if( i !== list2.length ) {
    return false; // In case list2 was longer than list1
}

return true;
于 2012-06-11T07:03:25.233 回答
1

为此使用常规循环,并且不要true在循环内返回,那么您只会比较第一个元素:

for (var i = 0; i < list1.length; i++) {
    if (list1[i] !== list2[i]) {
        return false
    }
}
return true;
于 2012-06-11T07:03:08.037 回答
0

这只是解决有问题的样本数据问题的最简单方法,而不是好奇心。

 return list1.toString() == list2.toString();

它将适用于大多数数据排除:带逗号的字符串和检查类型是否相等。

顺便提一句。

我认为我找到了其他方式 - 讨论:

return   !(list1<list2 || list1>list2);

任何人?

于 2012-06-11T08:20:21.987 回答