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;
}