检查数组中的所有值是否都是数字
check to see if all values inside an array is a number
我需要一种方法来检查数组是否只包含数字。例如
var a = [1,2,3,4] should pass and give true boolean
whereas var b = [1,3,4,'a'] should give false
我尝试了forEach()函数作为
a.forEach(function(item, index, array) {
if(!isNaN(item)) {
array.unshift("-");
}
}); //console.log of this will give array a = ["-","-","-","-", 1,2,3,4]
,但是由于forEach()遍历数组中的每个索引,并且由于var a的每个项都是数字,因此它将迭代的每个项都平移到数组中。我需要一种方法,如果整个数组值是一个数字,只平移一次"-"。
我也试着用test()
var checkNum = /[0-9]/;
console.log(checkNum.test(a)) //this gives true
console.log(checkNum.test(b)) // this also gives true since I believe test
//only checks if it contains digits not every
//value is a digit.
最简单的是使用Array
的every
函数:
var res = array.every(function(element) {return typeof element === 'number';});
试试这样:
var a = arr.reduce(function(result, val) {
return result && typeof val === 'number';
}, true);
function areNumbers(arr) {
document.write(JSON.stringify(arr) + ':')
return arr.reduce(function(result, val) {
return result && typeof val === 'number';
}, true);
}
document.write(areNumbers([1, 2, 3, 4]) + '<br>');
document.write(areNumbers([1, 2, 3, '4']) + '<br>');
var filteredList = a.filter(function(item){ return !isNaN(+item) });
开头的+号将尝试将项目转换为数字,如果可以,它将不会过滤掉,例如:
var numbers = +"123"
console.log(numbers) //will print out 123 as numbers not as a string
相关文章:
- 测试索引值是否等于某个数字的倍数
- jquery检查数字是否键入了isNaN
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 是否可以在javascript中执行“;数字加负数”;
- ==是否创建垃圾?(将字符串与数字进行比较时)
- 试图检查表单中的值是否为一个设定范围内的数字
- 使用 Javascript 检查文本区域值是否为数字
- 货币过滤器是否仅适用于使用 $scope.$eval() 的数字
- jQuery 验证输入文本是否仅接受数字、单词或日期
- 检查字符串是否等于一个单词和一个数字
- 检查输入是否都是数字html javascript
- 检查给定的数字是否属于node.js中的Fibonacci序列
- 验证数字是否在0.00到20.00之间的正则表达式
- 如何在javascript中测试字符串是否包含带正则表达式的数字
- javascript测试一个值是否是一个数字和一个大于0的数字
- 如何在函数中编写 if/else 语句,告诉我一个数字是否可以被 2 整除(在 javascript 中)
- Javascript正则表达式,用于检查字符串是否为有效数字
- 验证javascript中的输入是否在2个数字之间
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字