js从数组取出 连续的 数字_实现一维数组中连续数字分成几个连续的数字数组
使用原生js将一维数组中,包含连续的数字分成一个二维数组,
1、过滤单个数字,例如[-3,-2,-1,-2,0,1,3,8,9,10]分成:
[
[-3, -2, -1],
[0, 1],
[8, 9, 10],
]实现上面的过滤效果,js代码如下:
function getCode(arr){
var before = arr[0],
r = [],
result = [];
for(var i=1;i<arr.length; i++) {
if( arr[i]-before === 1 ) {
if (r.length === 0)
r.push(before);
r.push(arr[i]);
}else{
if (r.length)
result.push(r);
r = [];
}
before = arr[i];
}
if (r.length) {
result.push(r);
}
return result;
}使用:
var arr = [-3,-2,-1,-2,0,1,3,8,9,10];
console.log(getCode(arr));2、包含单个数字,例如[-3,-2,-1,-2,0,1,3,8,9,10]分成:
[
[-3, -2, -1],
[-2],
[0, 1],
[3],
[8, 9, 10],
]js代码如下:
function getCode(arr){
var result = [],
i = 0;
result[i] = [arr[0]];
arr.reduce(function(prev, cur){
cur-prev === 1 ? result[i].push(cur) : result[++i] = [cur];
return cur;
});
return result;
}本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!