如何推翻从儿童父母的数组结果树到父母的孩子在Javascript中
问题描述:
任何人都可以帮我用JavaScript函数来推翻这个下面的数组。这个结果我从数据库中获得,并打算使用JavaScript来做一些树。如何推翻从儿童父母的数组结果树到父母的孩子在Javascript中
[{
SubCategoryId: 1,
SubCategoryName: "SubCategoryName1",
Category: {
CategoryId: 11,
CategoryName: "CategoryName1",
MainCategory: {
MainCategoryId: 111,
MainCategoryName: "MainCategoryName1",
}
}
},{
SubCategoryId: 2,
SubCategoryName: "SubCategoryName2",
Category: {
CategoryId: 11,
CategoryName: "CategoryName1",
MainCategory: {
MainCategoryId: 111,
MainCategoryName: "MainCategoryName1",
}
}
},{
SubCategoryId: 3,
SubCategoryName: "SubCategoryName3",
Category: {
CategoryId: 22,
CategoryName: "CategoryName2",
MainCategory: {
MainCategoryId: 111,
MainCategoryName: "MainCategoryName1",
}
}
}]
我预期的结果是:
[{
MainCategoryId: 111,
MainCategoryName: "MainCategoryName1",
Category: [{
CategoryId: 11,
CategoryName: "CategoryName1",
SubCategory: [{
SubCategoryId: 1,
SubCategoryName: "SubCategoryName1",
}, {
SubCategoryId: 2,
SubCategoryName: "SubCategoryName2",
}]
}, {
CategoryId: 22,
CategoryName: "CategoryName2",
SubCategory: [{
SubCategoryId: 3,
SubCategoryName: "SubCategoryName3",
}]
}],
}]
感谢您的帮助
答
function category (arr) {
// Start with empty array
ret = new Array();
// Iterate arr
for (var i = 0; i < arr.length; i++) {
// Search MainCategory
var match = false;
var j = 0;
for (j = 0; j < ret.length; j++) {
if (ret[j].MainCategoryId == arr[i].Category.MainCategory.MainCategoryId) { match = true; break; }
}
// If not exist MainCategory
if (!match) {
ret.push({
MainCategoryId: arr[i].Category.MainCategory.MainCategoryId,
MainCategoryName: arr[i].Category.MainCategory.MainCategoryName,
Category: []
});
}
// Search Category
match = false;
var k = 0;
for (k = 0; k < ret[j].Category.length; k++) {
if (ret[j].Category[k].CategoryId == arr[i].Category.CategoryId) { match = true; break; }
}
// If not exist Category
if (!match) {
ret[j].Category.push({
CategoryId: arr[i].Category.CategoryId,
CategoryName: arr[i].Category.CategoryName,
SubCategory: []
});
}
// Insert Subcategory
ret[j].Category[k].SubCategory.push({
SubCategoryId: arr[i].SubCategoryId,
SubCategoryName: arr[i].SubCategoryName
});
}
// Return new array
return ret;
}
+0
这真是太棒了!并且工作得很好,非常感谢,非常感谢。 –
有什么问题吗? – m02ph3u5
结构来自孩子父母,我需要将其改为父母子女 –