以下是数据。我想要做的是注入所有这些数据转化为包含所有属于这些类别的类别和所有的书一个变量:卡住实现一个嵌套的数据过滤循环,可能是一个更优雅的方式吗?
var categories = [
// ...
{
"_id" : "5436b12b456f61180f815c06",
"name" : "Horror"
},
{
"_id" : "5436b43f18bbc8a8073e786e",
"name" : "Action"
}
// ...
];
var books = [
// ...
{
"_id" : "5436b43f18bbc8a8073e786d",
"title" : "The Bourne Legacy",
"category" : "5436b43f18bbc8a8073e786e"
},
{
"_id" : "5436b5c9de9884e010d5ef24",
"title" : "Digital Fortress",
"category" : "5436b50dc6faf3d41071a669"
}
// ...
];
这是我想如何将数据看起来像一个样机过滤后:
categories_titles = [
{
categoryName: 'Category One',
categoryTitles: [
{title: 'Book 1'},
{title: 'Book 2'},
// ...
]
},
{
categoryName: 'Category Two',
categoryTitles: [
{title: 'Book 3'},
{title: 'Book 4'},
// ...
]
}
];
这是我正在努力解决的问题:
categories_titles= [];
for (var category in categories) {
for (var book in books) {
if (books[book].category == categories[category]._id) {
categories_titles.push(
{
name: categories[category].name,
titles: [
{title: books[book].title}
]
}
);
}
}
}
这种方法仅适用部分;所有类别正在列出,但有些正在重复,并且有些标题不见了,或者不在其应有的位置。
此外,访问项目,如:categories_titles[0].titles[0].title
是相当怪物,我有一种感觉,这可以更优雅地解决。
请指教。
相当有洞察力。然而,这些数据是通过模型从MongoDB数据库中提取出来的,如果过滤看起来很复杂,也许我的数据建模都是错误的,显然是这样,因为我很快设置了数据库集合(I'米学习/试验这个东西)。这里要说的是,将来我应该对数据进行建模,同时考虑将要对其执行的查询类型。 – Duos 2014-10-16 14:53:23
它看起来像我是你的数据模型正在思考的SQL ...这对SQL很好。但他们通常不会翻译成mongodb。或者至少,而不是让你有效的方式来操纵数据。但我不是这个词的任何意义上的mongodb专家。 – ChrisCM 2014-10-16 14:56:47