我正在检查一个数字数组是否在JavaScript中是全数字的。简单来说,就是如果它是一个9位数,则必须有所有的数字1-9。我已经对数字数组进行了排序,并编写了以下循环:
for(var i = 0; i < 9; i++) {
if(parseInt(digits[i]) != i+1) {
return false;
}
}
但我想知道以下内容是否更快:
for(var i = 0; i < 9; i++) {
if(digits[i] != (i+1).toString()) {
return false;
}
}
我不确定哪种方法更快。我觉得将其转换为字符串比解析成数字要快。我尝试过运行几个测试,但结果并没有令人信服:我的电脑太老了,结果非常不稳定。
哪种方法会更快,为什么?这种速度差异会随着数字的增大而增加吗?
编辑
“digits”是排序后的数字字符串数组,例如:
var digits = [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ];
!=
运算符比较单个数字和其字符串版本是否相等或不相等可能会更快,正好符合您的要求! - Pointy"2" == 2
是true
,而"2" != 3
也是true
。 - Pointyreturn digits.join("") === "123456789"
,意思不变。 - andi