目前,我正在使用Angular的forEach()
方法来检查数组中的新值与对象。 但这是错误的方法,因为例如在列表中有20个对象时,当我创建一个已存在的文章的对象时,forEach中的if语句会告诉我们一次文章已经存在,19次它不存在。
以下代码:
var list = [];
articlelist.forEach(function (val) {
list.push(val.artNr);
});
$log.info(list);
articlelist
包含所有20个对象。为了比较,我只需要 artNr
。因为当用户创建一个新文章时,应该有一个 if-语句来检查所添加的 artNr 是否已经存在。
$scope.createItem = function (createItem) {
if(list.artNr === createItem.artNr) {
$scope.message = 'artNr already exists!';
}
...
};
问题是,由于list变量是一个数组,所以list.artNr返回“undefined”:
如何将新创建的对象与来自list变量的数组进行比较?控制台中的列表输出 =>
Array ["AB001", "AB002", "AB003", "AB004"]
createItem输出: =>
Object { artNr: "AB001", description: "New Article" ...}
indexOf
method didn't work for me as I was using json object array retrieved from the local storage. After trying many different methods, I have decided to use $filter provider available in AngularJS.var articlelist = [ {id: 1, title: 'Title1'}, {id: 2, title: 'Title2'}, {id: 3, title: 'Title3'} ]
var o = $filter('filter')(articlelist, { 'id': new_title.id }, true);
if (o.length == 0) {
articlelist .push(new_article);
}
- Manoj De Mel