检查数组中是否存在值 (AngularJS)
Check if value exists in the array (AngularJS)
目前,我正在使用 angular 的 forEach()
方法来检查对象数组的新值。但这是错误的方法,因为例如,列表中有 20 个对象。当我使用现有文章创建对象时,forEach 中的 if 语句会告诉一次该文章存在,而有 19 次告诉它不存在。
以下代码:
var list = [];
articlelist.forEach(function (val) {
list.push(val.artNr);
});
$log.info(list);
articlelist
包含所有 20 个对象。为了进行比较,我只需要 artNr
。因为当User创建新文章时,then应该是一个if语句来检查添加的artNr是否已经存在。
$scope.createItem = function (createItem) {
if(list.artNr === createItem.artNr) {
$scope.message = 'artNr already exists!';
}
...
};
问题是,list.artNr returns 我“未定义”,因为列表变量是一个数组:
list output in console => Array ["AB001", "AB002", "AB003", "AB004"]
,
createItem output: => Object { artNr: "AB001", description: "New Article" ...}
如何将新创建的对象与列表变量中的数组进行比较?
您可以使用 indexOf
函数。
if(list.indexOf(createItem.artNr) !== -1) {
$scope.message = 'artNr already exists!';
}
关于 indexOf 的更多信息:
您可以使用 indexOf()。喜欢:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.indexOf("brown");
alert(a);
indexOf() 方法在数组中搜索指定的项目,return 是它的位置。并且 return -1 如果找不到该项目。
如果要从头到尾搜索,请使用 lastIndexOf() 方法:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.lastIndexOf("brown");
alert(a);
搜索将从指定的位置开始,如果没有指定开始位置则搜索结束,并在数组的开头结束搜索。
Returns -1 如果找不到该项目。
你可以用这样的东西....
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});
};
目前,我正在使用 angular 的 forEach()
方法来检查对象数组的新值。但这是错误的方法,因为例如,列表中有 20 个对象。当我使用现有文章创建对象时,forEach 中的 if 语句会告诉一次该文章存在,而有 19 次告诉它不存在。
以下代码:
var list = [];
articlelist.forEach(function (val) {
list.push(val.artNr);
});
$log.info(list);
articlelist
包含所有 20 个对象。为了进行比较,我只需要 artNr
。因为当User创建新文章时,then应该是一个if语句来检查添加的artNr是否已经存在。
$scope.createItem = function (createItem) {
if(list.artNr === createItem.artNr) {
$scope.message = 'artNr already exists!';
}
...
};
问题是,list.artNr returns 我“未定义”,因为列表变量是一个数组:
list output in console =>
Array ["AB001", "AB002", "AB003", "AB004"]
,createItem output: =>
Object { artNr: "AB001", description: "New Article" ...}
如何将新创建的对象与列表变量中的数组进行比较?
您可以使用 indexOf
函数。
if(list.indexOf(createItem.artNr) !== -1) {
$scope.message = 'artNr already exists!';
}
关于 indexOf 的更多信息:
您可以使用 indexOf()。喜欢:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.indexOf("brown");
alert(a);
indexOf() 方法在数组中搜索指定的项目,return 是它的位置。并且 return -1 如果找不到该项目。
如果要从头到尾搜索,请使用 lastIndexOf() 方法:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.lastIndexOf("brown");
alert(a);
搜索将从指定的位置开始,如果没有指定开始位置则搜索结束,并在数组的开头结束搜索。
Returns -1 如果找不到该项目。
你可以用这样的东西....
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});
};