Javascript 检查数组中的数字是否连续并存储它们?

Javascript check if numbers in an array are consecutive and store them?

我有一个这样的数组:

arr = [1,3,4,5,7,8]

我需要检查下一个数字是否与当前数字连续,如果是,则将两者存储在一起,否则我将单个数字存储在数组中。

上面的数组应该给出以下结果:

newArray = [1, 345, 78]

我尝试了一个简单的解决方案,只有在只有 2 个连续数字的情况下才能实现我想要的:

for (i = 0; i < array.length; i++) {
    if (array[i] === array[i - 1] + 1) {
        newArray.push(array[i - 1] + array[i]);
    } else {
        newArray.push(array[i]);
    }
}

当我尝试做更多的数字时,事情变得非常混乱。

我知道这看起来不是什么大问题,但我试了好几个小时却找不到结果。

你可以这样做

const arr = [1,3,4,5,7,8]

const groupConsecutive = arr => {
 const result = arr.reduce((res, n) => {
  if(n - res.prev === 1){
    return {
      prev: n,
      current: [...res.current, n.toString()],
      total: res.total
    }
  }
  return {
    prev: n,
    current: [n.toString()],
    total: [...res.total, res.current]
  }

}, {prev: '', current: [], total: []})
 return [...result.total, result.current].flatMap(n => Number(n.join('')))
}

console.log(groupConsecutive(arr))