以下是數據。我想要做的是注入所有這些數據轉化爲包含所有屬於這些類別的類別和所有的書一個變量:卡住實現一個嵌套的數據過濾循環,可能是一個更優雅的方式嗎?
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