我有一个数组,它返回如下的值:
//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.');
}
答案 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));