Javascript\Jquery 检查数值数组值是否连续且连续,return 值不正确
Javascript\Jquery check if a numeric array values are sequential and contiguous and return incorrect values
我正在使用 javascript\jquery,我需要检查数值数组值是否连续且连续,以及 return 不正确的值。
示例
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
如何识别多个正确序列?
提前致谢,
克拉
您可以使用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)
编辑其他问题。
您可以为左右检查和测试 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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
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);
我正在使用 javascript\jquery,我需要检查数值数组值是否连续且连续,以及 return 不正确的值。
示例
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
如何识别多个正确序列?
提前致谢, 克拉
您可以使用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)
编辑其他问题。
您可以为左右检查和测试 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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
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);