如何防止在angularjs中的数组推送重复

Azi*_*usa 24 arrays angularjs

我的代码是这样的:

var arr = [];
arr.push(item1,item2);
Run Code Online (Sandbox Code Playgroud)

所以arr将包含像:["name","thing1"]

但是在推送具有相同精确值的元素时出现问题,如何过滤相同的元素值但仍接受更新/更改.的jsfiddle

xxm*_*oxx 42

你可以使用arr.indexOf哪个返回-1如果找不到,那么你可以添加它.

例如

if (arr.indexOf(item) == -1) {
    arr.push(item);
}
Run Code Online (Sandbox Code Playgroud)

但是,这在旧浏览器中不起作用......

JQuery有一个方法($.indexOf)可以在每个浏览器中运行,甚至是非常旧的浏览器.


Vam*_*msi 9

只是javascript就足够了.

如果数组包含该项,则其索引> = 0

所以你可以这样做,如果index == -1,数组中不存在item,那么你可以推送唯一的item

if(arr.indexOf(item) == -1) {
   arr.push(item);
}
Run Code Online (Sandbox Code Playgroud)

编辑: 你要求更改号码,这是怎么回事

var index = arr.indexOf(item);
if(index > -1) { //checking if item exist in array
  arr[index]++;   // you can access that element by using arr[index], 
                 // then change it as you want, I'm just incrementing in above example
}
Run Code Online (Sandbox Code Playgroud)