按特定顺序检查数组中的多个值

时间:2013-02-13 23:45:18

标签: javascript arrays

我有这个数组(下面),我正在尝试检查它是否有特定值。

var a = [ true, "lipsum" ];

我需要做的是检查a[0]是否为真,a[1]是否为“lipsum”

我可以分别检查两个值:

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

...为了缩短代码,我试着这样做:

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

为什么上面的代码示例为false,是否有其他方法可以实现我的目标?


我可以这样做:

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

虽然我不禁觉得有更好的方法..?


2 个答案:

答案 0 :(得分:1)

只有两个元素检查直截了当的方式似乎是最好的,但我认为你想要出于维护原因这样做,因为最终你可能有几个条件需要检查(不只是两个)。如果是这样,你可以做类似下面的事情,这似乎只有两个条件,但是当你开始添加更多它会更合理,所以这里有一个例子有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
}

答案 1 :(得分: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/