0

この配列 (以下) があり、特定の値があるかどうかを確認しようとしています。

var a = [ true, "lipsum" ];

私がする必要があるのは、a[0]真であるかどうか、およびa[1]「リップサム」であるかどうかを確認することです

両方の値を個別に確認できます。

a[0] === true && a[1] === 'lipsum' // true

...コードを少し短くするために、私はこれをやろうとしました:

a === [ true, 'lipsum'] // false

上記のコード例が間違っているのはなぜですか?私がやろうとしていることを達成する別の方法はありますか?


私はこれを行うことができます:

a.join() === 'true,lipsum' // true

もっと良い方法があると感じずにはいられませんが..?


4

2 に答える 2

1

2 つの要素のみをチェックする簡単な方法が最善のようですが、最終的には (2 つだけでなく) いくつかの条件をチェックする可能性があるため、メンテナンス上の理由からこれを行う必要があると思います。もしそうなら、あなたは次のようなことをすることができます.2つの条件だけでは冗長に見えますが、さらに追加し始めるとより合理的なので、確認する5つの条件の例を次に示します:

// set a constant somewhere for your truth condition
var COND = [1, 'a', 5, 'b', 0];

// check `a` against the constant array using `every` (Thanks Bergi)
if (a.every(function(v, i){ return COND[i] === v; })) {
    // all array elements the same
}
于 2013-02-14T00:00:40.893 に答える
0

各配列は個別のオブジェクトであるため、等値演算子を使用してそれらを比較することはできません。既知の引数を厳密に比較する必要があると仮定すると、最初に使用する方法が最適です。

元の配列に含まれている必要がある引数の別の配列がある場合は、ループを使用する必要がありますが、抽象化することもできます。

Array.prototype.contains = function (array) {
    for (var x = 0; x < array.length; x++) {
        if (this.length < x || this[x] !== array[x]) {
            return false;
        }
    }
    return true;
}

http://jsfiddle.net/q5DvG/1/

于 2013-02-13T23:53:20.880 に答える