检测数组中是否只有空值
Detect if array has only null values in it
我有一个数组,如果该数组仅包含null
值,我想要一个简单的非循环测试。空数组也计为只有空值。
我想描述问题的另一种方法是测试数组是否至少有一个非空值。
所以:
Good: [ null, null, null ]
Good: []
Bad: [ null, 3, null ]
您可以通过使用以下Array#every
来避免使用显式循环:
var all_null = arr.every(function(v) { return v === null; });
但当然,在内部,引擎仍将迭代数组。 显式迭代数组实际上可能更快。重要的是要在遇到未null
元素时中断循环(该方法就是这样做的)。
并非每个浏览器都支持此方法,请参阅多边形填充的链接。
我能想到的最简单的方法是一个简单的:
Array.prototype.isNull = function (){
return this.join().replace(/,/g,'').length === 0;
};
[null, null, null].isNull(); // true
[null, 3, null].isNull(); // false
JS小提琴演示。
这将获取数组,将该数组的元素连接在一起(不带参数join()
将数组元素与,
个字符连接在一起)以返回一个字符串,将该字符串中的所有,
字符(使用正则表达式)替换为空字符串,然后测试长度是否等于 0
。所以:
[null, 3, null].isNull()
联合起来给予:
',3,'
替换所有逗号(在正则表达式后使用 g
标志),以给出:
'3'
测试以查看其长度是否等于 0
,得到:
false
值得注意的是,可能存在检查数组中,
的问题。
此外,Felix Kling的回答更快一些。
var arrayData1 = [null, null, null];
var arrayData2 = [];
var arrayData3 = [null, 3, null];
var arrayData4 = [3];
function isNull(inputArray) {
if (inputArray.length) {
var currentElement = inputArray[0];
for (var i = 1, len = inputArray.length; i < len && currentElement === null; i += 1) {
currentElement = currentElement || inputArray[i];
}
if (currentElement !== null) {
return false;
}
}
return true;
}
console.log(isNull(arrayData1));
console.log(isNull(arrayData2));
console.log(isNull(arrayData3));
console.log(isNull(arrayData4));
输出
true
true
false
false
编辑1:这是最有效的解决方案(由user2736012建议)。此解决方案应用 KISS 原则。K eep I t S imple, S illy.
function isNull(inputArray) {
for (var i = 0, len = inputArray.length; i < len; i += 1)
if (inputArray[i] !== null)
return false;
return true;
}
性能结果:http://jsperf.com/so-q-19337761/6
相关文章:
- 使用 jQuery 检查所有值是否为空或已填充
- 检查同一类的所有输入值是否为空jquery
- 是否可以将方法添加到空值的原型中
- 我想在列表中过滤文本框值是否使用挖空更改
- 如何检查请求查询值是否为空,例如“”
- 检查 javascript 数组是否不仅包含空值
- JSON 是否应包含空值
- 检查角度模板中的值是否不为空且不为空
- 如何使用 javascript 检查两个值是否不等于空
- 检查值是否为空
- 检查输入值是否为空并显示警报
- 使用 Javascript 检查 html 表单值是否为空
- 检查输入值是否为空
- JavaScript 的类型函数是否检查空值
- 如何发现数据属性是否设置为空值?
- 如何在浏览器刷新后检查输入值是否为空
- 选择JSON的部分并检查值是否为空
- 使用jQuery检查值是否为空
- 检查javascript数组值是否为空
- JS:根据值是否为空做不同的事情