JavaScript – 有人可以建议一些更好的方式来编写这个Javascript代码

我得到一个输入数组需要转换为输出数组(它是输出数组中的连续数组。)

var input = [1, 3, 4, 5, 8, 9, 15, 20, 21, 22, 23, 24, 25, 26, 40];
var output = [[1], [3, 4, 5], [8, 9], [15], [20, 21, 22, 23, 24, 25, 26], [40]];

我能够通过以下方式实现这一点:

let t = 0;
let tArr = []
const a = [];
input.map(i => {
  if (i-t === 1) {  
    tArr.push(i);
  } else {
    a.push(tArr);
    tArr = [];
    tArr.push(i)
  }
  t = i;
});
a.push(tArr);
console.log("final", a)

有人可以建议更清洁的代码,或者是否可以优化。


您可以通过查看索引或前一个值来减少数组,并与实际值进行比较。

var input = [1, 3, 4, 5, 8, 9, 15, 20, 21, 22, 23, 24, 25, 26, 40],
    result = input.reduce((r, v, i, a) => {
        if (!i || a[i - 1] + 1 < v) {
            r.push([v]);
        } else {
            r[r.length - 1].push(v);
        }
        return r;
    }, []);

console.log(result);

添加评论

友情链接:蝴蝶教程