我的代码阵推是这样的:如何防止重复在angularjs
var arr = [];
arr.push(item1,item2);
所以arr
将包含类似: [“名称”,“thing1”]
但我得到了问题的时候推动元素具有相同的精确值,我如何过滤相同的元素值,但仍然接受更新/更改。 JSFIDDLE
我的代码阵推是这样的:如何防止重复在angularjs
var arr = [];
arr.push(item1,item2);
所以arr
将包含类似: [“名称”,“thing1”]
但我得到了问题的时候推动元素具有相同的精确值,我如何过滤相同的元素值,但仍然接受更新/更改。 JSFIDDLE
只需javascript就够了。
如果数组包含其索引是该项目> = 0
这样你就可以做到这一点,如果指数== -1,项目不会在数组中存在的,所以你可以把唯一的项目
if(arr.indexOf(item) == -1) {
arr.push(item);
}
编辑: 你问改变的数量,这是多么
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
}
我试图用这个,但没有工作。我仍然想要更新数组中的数字,只是不要将整个元素推到数组的末尾 – 2014-09-04 14:05:18
检查修改的示例 – Vamsi 2014-09-04 14:22:25
您可以使用arr.indexOf
如果找不到它,则返回-1,所以你可以添加它。
例如
if (arr.indexOf(item) == -1) {
arr.push(item);
}
然而,这并不在旧的浏览器工作...
jQuery有,在每一个浏览器的工作原理,即使是非常老的一个方法($.indexOf
)。
工作得很好......谢谢! – 2017-02-10 01:39:18
正如大多数答案指出的那样,您可以使用Array.prototype.indexOf()
方法来确定值是否存在。为了检查这一点,请在ng-change()
事件回调中检查对应于您的ng-models
值属性selects.value
的字符串数组。
的Javascript
$scope.goChange = function(name, value){
if(!~arr.indexOf(value)) {
arr.push(name, value);
console.log(arr);
}
};
HTML
<select ng-model="selects" ng-change="goChange(item.name, selects.value)" ng-options="i as i.value for i in options">
<option value=""></option>
</select>
您应该使用Angular Filters。
一些实现可以发现回答过类似的问题:How to make ng-repeat filter out duplicate results
您可以使用jQuery的'grep'。 [看到这个](http://stackoverflow.com/a/7364307/4365626) – 2015-09-15 12:34:43