根据JavaScript中当前元素与先前元素之间的差异对已排序的数组进行分组

假设我们有一个整数数组,以这样的升序排序-

const arr = [ 1, 2, 3, 5, 6, 7, 10, 12, 17, 18];

我们需要编写一个包含一个这样的数组的JavaScript函数。该函数应以以下方式对数组进行分组,以便-

  • 组中的元素相差1或更小

  • 每个组元素应具有多个元素,才能被视为有效

根据上述条件,预期输出为-

const output = [
   [1, 2, 3],
   [5, 6, 7],
   [17, 18]
];

示例

为此的代码将是-

const arr = [ 1, 2, 3, 5, 6, 7, 10, 12, 17, 18];
const groupNear = (arr = []) => {
   const res = [];
   for (let ind = 0; ind < arr.length; ind++) {
      let value = arr[ind];
      if (arr[ind − 1] + 1 === value) {
         res[res.length − 1].push(value);
      } else if (value + 1 === arr[ind + 1]) {
         res.push([value]);
      };
   };
   return res;
};
console.log(groupNear(arr));

输出结果

控制台中的输出将是-

[ [ 1, 2, 3 ], [ 5, 6, 7 ], [ 17, 18 ] ]