Javascript检查数组的元素

时间:2014-11-29 05:03:30

标签: javascript arrays

如果一个数组的元素都是0,除了一个是1?

之外,我如何检查它?

样品:

array = [0, 0, 0, 1, 0];
check(array); //returns the index where it is 1 which is 3

array = [0, 3, 0, 2, 0];
check(array); //returns -1

array = [0, 3, 1, 2, 0];
check(array); //returns -1 again if there are non zero aside from 1, it should be one 1 and others are all 0.

array = [0, 0, 1, 0, 1];
check(array); //returns -1 again, there should just be one element of 1

3 个答案:

答案 0 :(得分:2)

function check(a) {
    var index = -1;
    for (var i = 0; i < a.length; i++) {
        if (a[i] == 1) {
            if (index < 0) {
                index = i;
            } else {
                return -1;
            }
        } else if (a[i] != 0) {
            return -1;
        }
    }
    return index;
}

array1 = [0, 0, 0, 1, 0];
check(array1); //returns 3

array2 = [0, 3, 0, 2, 0];
check(array2); //returns -1

答案 1 :(得分:0)

你可以使用几个过滤器,从原始数组生成一个无效数字数组(即不是0或1),然后生成一个数组。最后,您可以检查这些结果数组的长度,以查看是否符合您的条件。

var others = a.filter(function(_item) { return (_item !== 1 && _item !== 0); }),
    ones = a.filter(function(_item) { return (_item === 1); });

if(others.length === 0 && ones.length === 1) {
    // valid
}

答案 2 :(得分:0)

如果确保数组元素为非负数,则可以对数组的所有元素求和。如果sum不是1,那么它不是你想要的数组。 您不必循环数组元素来计算元素总和。使用JavaScript Array的新reduce函数。在网上查找。

如果数组元素也可能是负数,那么事情会变得复杂。