在javascript中,如何通过中断将数组拆分为多个块?例如,
var array = [0,1,2,3,4,5,6,7,8,9,12,13,15,20]
var breaks = [0,3.5,13]
somefunction(array, breaks) === [[0,1,2,3],[4,5,6,7,8,9,12],[13,15,20]]
// true
breaks中的值不一定在数组中。
答案 0 :(得分:0)
您可以为break
数组使用索引,并在迭代array
时检查值。为每个找到的值添加一个新数组。
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 15, 20],
breaks = [0, 3.5, 13],
index = 0,
result = array.reduce((r, v) => {
if (v >= breaks[index]) {
r.push([]);
++index;
}
r[r.length - 1].push(v);
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
使用其可选参数的另一个reduce版本
breaks.reduce((acc, cur, idx, arr) => {
acc.push(
array.slice(
array.indexOf(cur),
arr[idx+1] ? array.indexOf(arr[idx+1]) : array.length
)
);
return acc;
}, [])