首页 > 解决方案 > 更新数字数组,使它们彼此之后

问题描述

我有一组数字,用户可以从页面中添加和删除。我需要排列数组中的数字,以便在添加/删除数字时它们始终彼此相邻

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 解决这个问题?

标签: javascriptecmascript-6lodash

解决方案


这就是我将如何做到的。

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

使用.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);
});


推荐阅读