gpt4 book ai didi

javascript - 如何获取 Backbone.Collection 的子集?

转载 作者:行者123 更新时间:2023-11-30 13:03:22 25 4
gpt4 key购买 nike

鉴于此集合 -

{"education":
[
{
"school":{
"name":"Maxwell",
"type":"Secondary",
"teachers": [
{"name":"Mrs. Smith","subject":"Chemistry"},
{"name":"Mr. Jones","subject":"Calculus"}
]
}
},{
"school":{
"name":"Bright",
"type":"Elementry",
"teachers": [
{"name":"Mr. Anthony","subject":"Reading"},
{"name":"Mrs. Bates","subject":"Social Studies"}
]
}
}
]

我正在尝试归还所有学校元素,以便我可以在我的模板中显示名称。

给定这段代码 -

schools = [];
filtered = this.filter(function (item) {
return (
item.get('school') !== ''
)
});
_.each(filtered, function(k,v) {
_.each(k.attributes.models, function (k2, v2) {
schools.push(k2.get('school'));
});
});
colSchools = new Backbone.Collection(schools);

这样可以完成工作,但它似乎效率不高,或者确实不是正确的做事方式。

我尝试在 this 上循环而不是过滤,但我收到一个错误,提示 k 未定义。我想我的问题分为两部分 - 为什么返回 k is undefined 以及我在获取教育集合的子集时遗漏了什么?我觉得嵌套循环是不需要发生的多余工作。可能是我误解了 Backbone 处理集合的方式,或者这真的是实现我目标的最佳方式吗?

最佳答案

我认为 http://backbonejs.org/#Collection-pluck是你要找的:

var stooges = new Backbone.Collection([
{name: "Curly", age: 60},
{name: "Larry", age: 70},
{name: "Moe", age: 80}
]);

var names = stooges.pluck("name");

alert(JSON.stringify(names));

如果你尝试它,这应该会提醒 ["Curly","Larry","Moe"]

编辑:抱歉,我没有发现嵌套级别,但由于 pluck 它只是 map 的一个应用程序,您可以这样做:

stooges.map(function(model){
return model.get('school').name;
});

关于javascript - 如何获取 Backbone.Collection 的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com