Javascript将数组中的数字与一系列连续数字分组

And*_*ers 5 javascript arrays

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

a = [0,1,2,5,6,9];
Run Code Online (Sandbox Code Playgroud)

我想确定范围

[
    [0,1,2],
    [5,6],
    [9]
]
Run Code Online (Sandbox Code Playgroud)

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


附加示例:

输入

b = [0,1,5,6,7,9];
Run Code Online (Sandbox Code Playgroud)

输出

[
    [0,1],
    [5,6,7],
    [9]
]
Run Code Online (Sandbox Code Playgroud)

Ori*_*ori 10

用 迭代Array#reduce,每当最后一个数字不等于新数字 - 1 时,添加另一个子数组。将当前数字添加到最后一个子数组:

const a = [0,1,2,5,6,9];

const result = a.reduce((r, n) => {
  const lastSubArray = r[r.length - 1];
  
  if(!lastSubArray || lastSubArray[lastSubArray.length - 1] !== n - 1) {
    r.push([]);
  } 
  
  r[r.length - 1].push(n);
  
  return r;  
}, []);

console.log(result);
Run Code Online (Sandbox Code Playgroud)

  • 婚姻幸福,有孩子,但不客气:) (2认同)