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 に答える