JavaScript循环遍历数组以检查数值

时间:2012-08-27 21:44:43

标签: javascript arrays

我有一个数组,它返回如下的值:

//Eg 1    [ [ "214323", "34243" ], [ "3333", "123" ] ]

//Eg 2    [ [ "214323" ],[ "3333" ] ]

我想验证数组是否只包含没有空格的数字或null,否则我想抛出一个错误。 这是我的以下代码,它在上面的示例中不起作用。即使所有值都是数字,它也会抛出错误。

for (var i = 0; i <= arrayVals.length; i++) {
    if(!(/^\d+$/.test(arrayVals[i]))) {
        err_comp=true;

        }   
}

if( err_comp ==true) {
        alert( 'The value has to be only numeric.');
} 

3 个答案:

答案 0 :(得分:2)

你不应该使用<=,因为从0开始你应该使用<

for (var i = 0; i < arrayVals.length;

答案 1 :(得分:2)

你有一个数组,因此你需要 两个 循环:

var err_comp = false;
for (var i = 0; i < arrayVals.length; i++) {
  var arr = arrayVals[i];
  for (var j = 0; j < arr.length; j++) {
    if (!(/^\d+$/.test(arr[j]))) {
        err_comp = true;
    }   
  }
}

否则,您将测试/^\d+$/.test([ "214323", "34243" ])

答案 2 :(得分:1)

multi_arr.every(function(arr) {
    return arr.every(function(n) {
        return /^\d+$/.test(n);
    });
});

您可以根据需要更改测试,如果需要,可以为IE8添加.every补丁。

你可以重复使用你的功能。

function forEveryArray(fn) {
    return function every_array(arr) {
        return arr.every(fn)
    }
}

function isNumber(n) { return /^\d+$/.test(n); }


multi_arr.every(forEveryArray(isNumber));