通过在Javascript中将数组拆分成块

时间:2018-08-08 18:45:11

标签: javascript arrays split chunks

在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中的值不一定在数组中。

2 个答案:

答案 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;
}, [])