我正在使用javascript \ jquery,我需要检查数值数组值是连续的还是连续的,并返回不正确的值。
实施例
arr = [1,2,3,10,15,30] 数组是顺序的,但只有1,2,3是连续的... 10 15和30是不正确的。
更新
如果数组是这样的arr = [1,2,3,10,11,12,15,30,50],正确的序列应该是2 ... 1,2,3和10,11,12 < / p>
如何识别多个正确的序列?
提前致谢, CLA
答案 0 :(得分:2)
您可以使用Array#filter
并检查前任或继任者。
var array = [1, 2, 3, 10, 15, 30],
result = array.filter(function (a, i, aa) {
return aa[i - 1] + 1 !== a && a + 1 !== aa[i + 1];
});
console.log(result)
&#13;
编辑其他问题。
你可以使用左边和右边的两个变量检查和测试id来添加一个空数组,然后将值推送到最后一个内部数组。
var array = [1, 2, 3, 10, 11, 12, 15, 30, 50],
result = array.reduce(function (r, a, i, aa) {
var left = aa[i - 1] + 1 === a,
right = a + 1 === aa[i + 1];
if (!left && right && (!r[r.length - 1] || r[r.length - 1].length)) {
r.push([]);
}
if (left || right) {
r[r.length - 1].push(a);
}
return r;
}, []);
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:1)
var arr = [1,2,3,10,15,30],
arr1=[1,2,3,4,5,6,10],
arr2=[10,11,40,50];
var checkArray=function(array){
var lastNum;
array.forEach(function(num,index){
if(index===0)
lastNum=num;
else{
if(lastNum+1===num)
lastNum=num;
else
console.log(num);
}
});
}
checkArray(arr);
console.log('----------------');
checkArray(arr1);
console.log('----------------');
checkArray(arr2);
&#13;