有没有一种简单的方法可以按范围对js数组值进行分组?

时间:2016-11-04 20:56:33

标签: javascript arrays

如果我有一个像下面这样的js数组,是否有一种简单的方法可以按范围重新组合数组值,逻辑基于范围步长,范围步长为1,所以如果数组值连续增加1,然后它应该写成“1-3”,否则应该打破另一组,非常感谢!

var list = ["1", "2", "3", "5", "6", "9", "12", "13", "14", "15", "16"]

function(list) {

    // * some function here //

    return ["1-3", "5-6", "9", "12-16"]
}

1 个答案:

答案 0 :(得分:4)

您可以使用Array#reduce

var array = ["1", "2", "3", "5", "6", "9", "12", "13", "14", "15", "16"],
    result = array.reduce(function (r, a, i, aa) {
        r.push(!i || aa[i - 1] - a + 1 ? a : r.pop().split('-')[0] + '-' + a);
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }