Check if value exists in the array (AngularJS)
本问题已经有最佳答案,请猛点这里访问。
目前我正在使用角的
以下代码:
1 2 3 4 5 6 7 | var list = []; articlelist.forEach(function (val) { list.push(val.artNr); }); $log.info(list); |
1 2 3 4 5 6 | $scope.createItem = function (createItem) { if(list.artNr === createItem.artNr) { $scope.message = 'artNr already exists!'; } ... }; |
问题是,list.artnr返回"undefined",因为list变量是一个数组:
list output in console =>
Array ["AB001","AB002","AB003","AB004"] ,createItem output: =>
Object { artNr:"AB001", description:"New Article" ...}
如何将新创建的对象与列表变量中的数组进行比较?
您可以使用
1 2 3 | if(list.indexOf(createItem.artNr) !== -1) { $scope.message = 'artNr already exists!'; } |
更多关于索引:
- HTTP://www. W3Chans.COM/JSRef/JSReFixEndioFo.Aray.ASP.ASP
- https://developer.mozilla.org/en/docs/web/javascript/reference/global_objects/string/indexof
可以使用indexof()。像:
1 2 3 | var Color = ["blue","black","brown","gold"]; var a = Color.indexOf("brown"); alert(a); |
indexof()方法在数组中搜索指定项,并返回其位置。如果找不到,返回-1。
如果要从头到尾搜索,请使用lastindexof()方法:
1 2 3 | var Color = ["blue","black","brown","gold"]; var a = Color.lastIndexOf("brown"); alert(a); |
搜索将从指定的位置开始,如果未指定起始位置,则从结尾开始,并在数组的开头结束搜索。
如果找不到项,则返回-1。
你可以用这样的东西……
1 2 3 4 5 6 7 8 9 10 11 12 | function (field,value) { var newItemOrder= value; // Make sure user hasnt already added this item angular.forEach(arr, function(item) { if (newItemOrder == item.value) { arr.splice(arr.pop(item)); } }); submitFields.push({"field":field,"value":value}); }; |