如果一个数组的元素都是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
答案 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函数。在网上查找。
如果数组元素也可能是负数,那么事情会变得复杂。