Javascript 如何根据数组的值差异拆分数组

Javascript 如何根据数组的值差异拆分数组,javascript,arrays,Javascript,Arrays,我有一个有序数组,如下所示: const arrayToSplit = [1, 3, 5, 8, 10, 12, 21, 23]; 我想将其拆分为多个数组,其中一个数组与另一个数组之间的差值为max a值,假设为2: const result = [ [1, 3, 5], [8, 10, 12], [21, 23] ]; 或8: 等等。我有一个解决方案,但与优雅的解决方案相去甚远,在优雅的解决方案中,我使用累加器变量运行数组。有没有更整洁、更优雅的解决方案 一个可能的解决办法是

我有一个有序数组,如下所示:

const arrayToSplit = [1, 3, 5, 8, 10, 12, 21, 23];
我想将其拆分为多个数组,其中一个数组与另一个数组之间的差值为max a值,假设为2:

const result = [ 
  [1, 3, 5],
  [8, 10, 12],
  [21, 23]
];
或8:

等等。我有一个解决方案,但与优雅的解决方案相去甚远,在优雅的解决方案中,我使用累加器变量运行数组。有没有更整洁、更优雅的解决方案

一个可能的解决办法是:

function splitArray(arrayToSplit = []){
  const explodedArray = [];

  let elementsNewArray = [];
  for(const element of arrayToSplit) {
    if(elementsNewArray.length == 0) {
      elementsNewArray.push(element);
      continue;
    }

    if(element - _.last(elementsNewArray)) <= 2) {
        elementsNewArray.push(element);
    } else {
        explodedArray.push(elementsNewArray);
        elementsNewArray = [element];
    }
  }

  explodedArray.push(elementsNewArray);
  return explodedArray;
}
函数拆分数组(arrayToSplit=[]){
常量数组=[];
让elementsNewArray=[];
for(arrayToSplit的常量元素){
if(elementsNewArray.length==0){
元素warray.push(元素);
持续
}

if(元素-u.last(元素战争射线))简单地跟踪在变量中迭代的最后一个项似乎相当简单。迭代时,检查该项与当前迭代项之间的差异是否大于限制。如果大于限制,则推送一个新数组。无论如何。将迭代项推送到集合中的最后一个数组

const arraytospilt=[1,3,5,8,10,12,21,23];
常数maxDiff=2;
常量结果=[[arrayToSplit[0]];
let last=arrayToSplit[0];
用于(ArraySplit.slice(1)的常量项){
if(item-last>maxDiff)result.push([]);
结果[result.length-1]。推送(项目);
最后一项=项目;
}
console.log(结果);
function splitArray(arrayToSplit = []){
  const explodedArray = [];

  let elementsNewArray = [];
  for(const element of arrayToSplit) {
    if(elementsNewArray.length == 0) {
      elementsNewArray.push(element);
      continue;
    }

    if(element - _.last(elementsNewArray)) <= 2) {
        elementsNewArray.push(element);
    } else {
        explodedArray.push(elementsNewArray);
        elementsNewArray = [element];
    }
  }

  explodedArray.push(elementsNewArray);
  return explodedArray;
}