1 回答

TA貢獻1829條經驗 獲得超4個贊
昨天有童鞋指出輸出結果不對,一看邏輯確實是有點問題
原答案已修改,代碼更簡潔,邏輯更清晰,并已注釋:
var arr = [174, 176, 177, 178, 179, 180, 183, 189, 190]
function group(list) {
list = list.sort()
var tmp = []
list.forEach((item, index) => {
var prev = list[index - 1] //前一項
if (prev && item === prev + 1) {//有相鄰前一項
if (typeof tmp[tmp.length - 1] === 'number') {//輸出數組最后一項是數字
tmp[tmp.length - 1] = prev + '~' + item //拼接成字符串
} else {//輸出數組最后一項是字符串
tmp[tmp.length - 1] = tmp[tmp.length - 1].split('~')[0] + '~' + item // 替換字符串最后的數字
}
} else {//沒有前一相鄰項或者沒有前一項
tmp.push(item)
}
})
return tmp
}
console.log(group(arr))
添加回答
舉報