Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript使用一系列连续的数字对数组中的数字进行分组_Javascript_Arrays - Fatal编程技术网

Javascript使用一系列连续的数字对数组中的数字进行分组

Javascript使用一系列连续的数字对数组中的数字进行分组,javascript,arrays,Javascript,Arrays,例如,给定一个整数排序数组 a = [0,1,2,5,6,9]; 我想确定以下范围: [ [0,1,2], [5,6], [9] ] 到目前为止,我已经尝试了双/三重循环,但它嵌套到了非常讨厌的代码中。 也许这个问题可以用递归或其他聪明的技巧来解决 其他示例: 输入 输出 [ [0,1], [5,6,7], [9] ] 使用数组#reduce进行迭代,当最后一个数字不等于新的数字-1时,添加另一个子数组。将当前编号添加到最后一个子数组:

例如,给定一个整数排序数组

a = [0,1,2,5,6,9];
我想确定以下范围:

[
    [0,1,2],
    [5,6],
    [9]
]
到目前为止,我已经尝试了双/三重循环,但它嵌套到了非常讨厌的代码中。 也许这个问题可以用递归或其他聪明的技巧来解决


其他示例:

输入

输出

[
    [0,1],
    [5,6,7],
    [9]
]
使用
数组#reduce
进行迭代,当最后一个数字不等于新的数字-1时,添加另一个子数组。将当前编号添加到最后一个子数组:

const a=[0,1,2,5,6,9];
常数结果=a.reduce((r,n)=>{
const lastSubArray=r[r.length-1];
如果(!lastSubArray | | lastSubArray[lastSubArray.length-1]!==n-1){
r、 推送([]);
} 
r[r.length-1]。推(n);
返回r;
}, []);

控制台日志(结果)Array.reduce like@OriDrori运行良好

另一个想法是使用一个简单的for循环和slice

函数组数组(a){
常数ret=[];
如果(!a.length)返回ret;
设ixf=0;
对于(设ixc=1;ixclog(JSON.stringify(groupArray([0,1,2,5,6,9]))这是我想到的:

const a=[0,1,2,5,6,9];
常量解决方案=(arr,预期为0,组=[])=>
arr.reduce((acc,c,i)=>
((c==预期值)
?(组推送(c),预期++)
:(acc.push(组),组=[c],预期=++c)),
(i==arr.length-1和acc.push(组)),
行政协调会,[]);

console.log(解决方案(a))您可以使用正常的for循环,并检查当前数字和以前数字之间的差异

var a=[0,1,2,5,6,7,9];
//此变量将包含数组
设finalArray=[];
//创建一个递归函数
函数检查PrevNextNumRec(数组){
设tempArr=[];
//如果数组仅包含1个元素,则将其推入finalArray并
//还它
if(array.length==1){
最终射线推送(阵列);
返回
}
//另一侧检查当前编号与上一编号之间的差异
for(设i=1;ilog(finalArray)
因此,第一个数组应该包含3个,下一个2个,最后一个数组应该只有1个元素。对吗?在这个例子中是的,但通常不是。如果
a=[0,1,2,5,6,9,12],它应该分割出int范围,输出结果是什么?@Salman不,如果数字是连续的,它会创建一个数组,也称为1,2,3-7,8,9,所以你想将排序后的数组拆分为其他连续数字数组?我爱你,谢谢你的好解决方案!婚姻幸福,有孩子,但不客气:)
[
    [0,1],
    [5,6,7],
    [9]
]