Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 推送并删除阵列的重复项_Javascript_Arrays_Set - Fatal编程技术网

Javascript 推送并删除阵列的重复项

Javascript 推送并删除阵列的重复项,javascript,arrays,set,Javascript,Arrays,Set,我有一个arr=['a','b','c']的数组(或集合?),我想向其中添加d,这可以通过arr.push('d')完成 但是我只希望数组中有唯一的值,并且我希望最新添加的值位于数组的前面 因此,如果我首先添加d,数组应该变成['d','a','b','c'],如果我现在添加b,数组应该变成['b','d','a','c']等等 应该是这样的吗 function addElement(arr, element) { if (arr.includes(element)) { arr.s

我有一个
arr=['a','b','c']
的数组(或集合?),我想向其中添加
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);
}
我想这可以通过集合来实现,因为集合只能包含唯一的值。

您可以使用a并提前删除该项,然后添加它。要获得所需的顺序,需要反转渲染数组

函数addToSet(v,set){
设置。删除(v);
增加(v);
}
var集合=新集合;
addToSet('d',集合);
addToSet('c',集合);
addToSet('b',集合),
addToSet('a',集合);
addToSet('d',集合);
console.log([…set].reverse())
$.inArray()的工作方式与indexOf()方法类似。它搜索数组中的元素,如果找到了,则返回其索引


您的功能可以正常工作,只需调整一个小补丁即可

 arr.splice(arr.indexOf(element),1);
var-arr=['a','b','c'];
函数加法器(arr,元素){
if(包括(要素)){
arr.拼接(arr.indexOf(元件),1);
}
arr.unshift(元素);
}
附加元素(arr,'d');
附加元素(arr,'b');

控制台日志(arr)
特别是对于那些不喜欢
.unshift()
性能的人,这将是另一种工作方式

函数funky(a,e){
var ix=a.indexOf(e);
返回(~ix?a.拼接(ix,0,…a.拼接(0,ix))
:a.拼接(0,0,e),a);
}
变量a=['d','a','b','c'];
log(funky(a,'z');
log(funky(a,'d');
log(funky(a,'c');

log(funky(a,'f'))可能重复的,他做的函数应该可以工作,有什么问题吗?@AhmerSaeed-
PHP
没有标记!
 arr.splice(arr.indexOf(element),1);