javascript - 推送并删除数组的重复项

标签 javascript arrays set

我有一个 arr = ['a', 'b', 'c'] 的数组(或 Set?),我想向其中添加 d ,这可以通过 arr.push('d') 完成。

但我只想要数组中的唯一值,并且我希望最新添加的值位于数组的前面。

所以如果我先添加 d 数组应该变成 ['d', 'a', 'b', 'c'] 如果我现在添加 b 数组应该变成 ['b', 'd', 'a', 'c']

应该是这样的吗

function addElement(arr, element) {
  if (arr.includes(element)) {
    arr.splice(arr.indexOf(element, 1));
  }
  arr.unshift(element);
}

我想这可以用集合来完成,因为集合只能包含唯一值。

最佳答案

你可以使用 Set并提前删除项目然后添加。要获得想要的顺序,您需要反转呈现的数组。

function addToSet(v, set) {
    set.delete(v);
    set.add(v);
}

var set = new Set;

addToSet('d', set);
addToSet('c', set);
addToSet('b', set),
addToSet('a', set);
addToSet('d', set);

console.log([...set].reverse());

关于javascript - 推送并删除数组的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39846428/

相关文章:

C 数组 malloc() VS {}

php - 具有循环引用的对象上的 in_array

javascript - 如何从鼠标单击坐标获取 WebGL 3d 空间中的对象

javascript - CSS使图像与包含元素的高度相同

java - 如何检查 2D 字符数组中的行中的特定元素,然后计算该行中有多少个该元素? ( java )

Python:将元组附加到带有元组的集合中

java - 无法通过引用方法传递元素来将元素添加到集合中

python - 多集交集运算的平均复杂度及其底层实现

javascript - `mailto:`在没有邮件客户端的时候有什么作用?

Javascript将列表填充到html中选择重复列表两次