根据Backbone中的条件过滤JSON对象

时间:2014-08-05 10:58:01

标签: javascript jquery json backbone.js underscore.js

我有以下JSON响应。在Backbone中我想从数组中过滤一些对象(名称)

例如 - 在这里我只需要循环'杰克','麦克'对象(名字。需要从arrary获得杰克和麦克的名字。

有人能给我任何想法吗?

resultstest = {
"r": [{
    "IsActive": false,
    "re": {
        "Name": "Depo"            
    },
    "Expire": "Oct8, 2013",
    "Clg": [{
        "Name": "james",
        "Rate": 0.05
    }, {
        "Name": "Jack",
        "Rate": 0.55
   }, {
        "Name": "Ander",
        "Rate": 0.46
   }, {
        "Name": "Mcd",
        "Rate": 0.01,
    }],
},
{
    "IsActive": false,
    "re": {
        "Name": "Depo"
    },
    "Expire": "Oct8, 2013",
    "Clg": [{
        "Name": "james",
        "Rate": 0.05
    }, {
        "Name": "Jack",
        "Rate": 0.55
   }, {
        "Name": "Mcd",
        "Rate": 0.01,
    }],
},
{
    "IsActive": false,
    "re": {
        "Name": "Depo"
    },
    "Expire": "Oct8, 2013",
    "Clg": [{
        "Name": "james",
        "Rate": 0.05
    }, {
        "Name": "Jack",
        "Rate": 0.55
   }, {
        "Name": "Mcd",
        "Rate": 0.01,
    }],
}]
};    

loadjson = function (input) {
        if (_.isArray(input)) {
            var collection = new CompeCollection();
            _.each(input, function (modelData) {
                ....
            });
            return collection;
        }
            };
var tablesResult = loadjson(resultstest.r[0].Clg); // can we filter here like resultstest.r[0].Clg(!="james" && !="Ander")

在传递给loadjson函数时是否有任何数组方法来过滤这些对象?任何帮助都会有所帮助。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用现代浏览器支持的Array.filter数组方法。为了兼容旧版浏览器,您可以使用_.filterhttp://underscorejs.org/#filter)。

所以你的代码就像,

var tablesResult = loadjson(_.filter(resultstest.r[0].Clg, function(clg) { return (clg.name !="james" && clg.name !="Ander"); }))

要干掉您的代码,您可以单独创建此过滤器功能,并在此处简单引用它。像,

var collegeFilter = function(clg) { return (clg.name !="james" && clg.name !="Ander"); }
...
var tablesResult = loadjson(_.filter(resultstest.r[0].Clg, collegeFilter));