我正在尝试编写一个简单的函数来测试一个数组是否连续但由于某种原因它不起作用。如果相关的话,这是角度JS应用程序的一小部分。
return function isConsecArray(arr){
var i;
var y = (arr.length);
for (i=0; i < y; i += 1){
if (parseInt(arr[i])+1 !== parseInt(arr[i+1]))
{
return false;
}
}
return true;
答案 0 :(得分:3)
当到达最后一个元素,即i=y-1
时,它会将arr[i]
与arr[i+1]
进行比较,这是未定义的。您需要迭代到arr.length-1
,即:
...
for (i=1; i < y-1; i += 1) { / NOTE THE y-1 LIMIT
...
答案 1 :(得分:0)
你可以这样写:
function isConsecArray(arr) {
var previous = arr[0];
var i;
var y = (arr.length);
if (y > 1) {
for (i=1; i < y; i += 1) {
if (parseInt(arr[i]) -1 !== parseInt(previous)) {
return false;
}
previous = arr[i];
}
}
return true;
}
JSFiddle:http://jsfiddle.net/dq1kccvk/