yur*_*uro 56 javascript arrays object angularjs angularjs-controller
目前我正在使用forEach()
angular 的-method来检查对象数组的新值.但这是错误的方法,因为例如在列表中有20个对象.当我用现有文章创建一个对象时,forEach中的if语句告诉一次该文章存在,而19次则不存在.
以下代码:
var list = [];
articlelist.forEach(function (val) {
list.push(val.artNr);
});
$log.info(list);
Run Code Online (Sandbox Code Playgroud)
在articlelist
包含所有20个对象.为了比较我只需要artNr
.因为当用户创建新文章时,应该是if-Statement来检查添加的artNr是否已经存在.
$scope.createItem = function (createItem) {
if(list.artNr === createItem.artNr) {
$scope.message = 'artNr already exists!';
}
...
};
Run Code Online (Sandbox Code Playgroud)
问题是,list.artNr返回"undefined",因为list变量是一个数组:
在console =>中列出输出
Array ["AB001", "AB002", "AB003", "AB004"]
,createItem output:=>
Object { artNr: "AB001", description: "New Article" ...}
如何将新创建的对象与列表变量中的数组进行比较?
Juh*_*nen 120
你可以使用indexOf
功能.
if(list.indexOf(createItem.artNr) !== -1) {
$scope.message = 'artNr already exists!';
}
Run Code Online (Sandbox Code Playgroud)
关于indexOf的更多信息:
Muh*_*ais 23
您可以使用indexOf().喜欢:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.indexOf("brown");
alert(a);
Run Code Online (Sandbox Code Playgroud)
所述的indexOf()方法搜索指定项的数组,并返回其位置.如果找不到该项,则返回-1.
如果要从头开始搜索,请使用lastIndexOf()方法:
var Color = ["blue", "black", "brown", "gold"];
var a = Color.lastIndexOf("brown");
alert(a);
Run Code Online (Sandbox Code Playgroud)
搜索将从指定位置开始,如果未指定开始位置,则从最后开始,并在数组的开头结束搜索.
如果找不到该项,则返回-1.
归档时间: |
|
查看次数: |
231498 次 |
最近记录: |