如果我有一个像下面这样的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"]
}
答案 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; }