1

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

//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.');
} 
4

3 回答 3

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" ]).

于 2012-08-27T21:48:48.343 回答
2

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

for (var i = 0; i < arrayVals.length;
于 2012-08-27T21:47:05.890 回答
1
multi_arr.every(function(arr) {
    return arr.every(function(n) {
        return /^\d+$/.test(n);
    });
});

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

您可以使您的功能可重用。

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

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


multi_arr.every(forEveryArray(isNumber));
于 2012-08-27T21:53:45.537 回答