检查嵌套的javascript对象数组中是否存在元素

时间:2014-10-20 09:53:33

标签: javascript angularjs

我以下列格式获取Javascript对象

{
"Alerts": [{
        "Name": "...",
        "Type": "Warning",
        "Message": "...",
        "Time": "..."
    },
    {
        "Name": "...",
        "Type": "Critical",
        "Message": "...",
        "Time": "..."
    },
    {
        "Name": "...",
        "Type": "Info",
        "Message": "...",
        "Time": "..."
    }]
}

如何检查我收到的此数组对象中是否存在严重类型的警报。

我正在使用angularjs。

4 个答案:

答案 0 :(得分:2)

你可以做这样的事情

function find(arr, key, text){
    for(var i = arr.length; i--;){
        if(arr[i][key] === text) return i;
    }
    return -1;
}

用法

var index = find(jsonObject.Alerts, "Type", "Critical")

答案 1 :(得分:2)

如果你正在寻找有角度的东西, 创建一个过滤器,

app.filter('checkCritical', function() {
    return function(input) {
         angular.forEach(input, function(obj) {
             if((obj.Type).toLowerCase() == 'critical') {
                return true;
             }
         });
         return false;
    };

})

在控制器内使用此过滤器

在控制器中,

var exists = $filter("checkCritical").(Alerts);

不要忘记将$filter注入控制器

答案 2 :(得分:0)

如果页面上有jQuery。

var exists = $.grep(alerts, function (e) { return e.Type == 'Critical'; }).length > 0;

注意:alerts(如上所示)将是您对象中的警报数组。

参考:

http://api.jquery.com/jquery.grep/

答案 3 :(得分:-1)

您必须循环遍历数组中的每个元素,并检查是否有任何对象具有“关键”'作为Type属性值。