簡體   English   中英

AngularJS檢查對象數組中的字段是否存在

[英]AngularJS checking if a field within an object array exists

我有一個這樣的數據模型:

var array =  [{id:1, name:"foo"}, {id:2, name:"bar"}, {id:3 name:"september"}];

我想遍歷數組,看看是否存在id:3,我該怎么做?

只需使用AngularJS 過濾器 ,這些過濾器就是為此目的而專門制造的:

var results = $filter('filter')(array, {id : 3}, true);

results將包含屬性id等於3的對象數組(可能有多個)。

如果results的長度為零,則沒有元素與過濾器匹配。
如果您知道,只有一種可能的結果,您可以使用results[0]直接檢索它。

使用過濾器的優勢在於,您可以通過擴展過濾器表達式{id : 3}輕松地對多個屬性值進行過濾。

干杯,

這比角度問題更像是一個js問題。 如果您使用的是lodash之類的庫,這非常簡單:

_.findWhere(array, {'id': 3})

用普通的javascript來說,這並不復雜。 這是一個EcmaScript 5解決方案,它使用了一些功能:

array.some(function(elem) {
    return elem.id === 3;
});

想知道,您在id:3之后缺少,

它比AngularJS更像是遍歷數組的javaScript,

var array =  [{id:1, name:"foo"}, {id:2, name:"bar"}, {id:3, name:"september"}];

for(var i in array){
    if(array[i].id === 3){
         console.log("found 3");
        //do something here.
         }
}

您甚至不需要lodash。 本機javascript:

(array.filter(function(a) {return a.id === 3})

將返回一個數組,該數組僅包含id為3的元素(如果存在),否則返回一個空數組。

您可以使用普通的JavaScript來做到這一點:

array.find(function(element){
    if(element.id == 3) return true;
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM