我有以下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函数时是否有任何数组方法来过滤这些对象?任何帮助都会有所帮助。
由于
答案 0 :(得分:0)
您可以使用现代浏览器支持的Array.filter
数组方法。为了兼容旧版浏览器,您可以使用_.filter
(http://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));