更新数字数组,使它们彼此相继

Update array of numbers so they are after each other

我有一组数字,用户可以在页面上添加和删除这些数字。我需要排列数组中的数字,以便当数字为 added/removed

时它们总是一个接一个
const numbers = [1,2,3,4,5,6,7,8] 

5 已从我如何修复的数组中删除,因此数字是一个接一个的,例如下面的

数字需要 [1,2,3,4,5,6,7]

或者如果删除了 2

numbers need to be [1,2,3,4,5,6,7] 

有没有办法用 lodash 或 es6 解决这个问题?

这是我的做法。

删除数字后,遍历数组并将数字设置为数组的索引。

使用.forEach()

const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
addEventListener('click', _ => {
  const removed = array.splice(Math.floor(Math.random() * array.length), 1);
  array.forEach((_, i) => array[i] = i);

  console.log(`Removed: `, removed[0]);
  console.log(`New Array`, array);
});

使用.map()

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
addEventListener('click', _ => {
  const removed = array.splice(Math.floor(Math.random() * array.length), 1);
  array = array.map((_, i) => i);

  console.log(`Removed: `, removed[0]);
  console.log(`New Array`, array);
});

从数组中删除数字后,您可以使用 for 循环对其进行迭代,并将该索引号分配给数组中的该位置。

const numbers = [1,2,3,4,5,6,7,8] 
numbers.splice(1, 1)     //2 was removed
for(var i = 0; i < numbers.length; i++){
  numbers[i] = i+1;
}