如何推翻数组结果树从子-父到父-子在Javascript
How to overturned array result tree from child-parent to parent-child in 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;
}
相关文章:
- 在javascript中使用正则表达式来剪切子字符串
- 在Javascript中查找子字符串,并前置/附加一些字符
- 在 Javascript 中更改 CSS 子类的值
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- 什么是子树(在JavaScript中引用DOM时)
- 在javascript中比较另一个字符串中的子字符串
- 如何跟踪在javascript中打开的子窗口
- 如何检查一个对象是否是“;子对象“;在Javascript中
- 在 JavaScript 中查找 ${ 和 } 之间的所有子字符串
- 在javascript中获取xml dom子元素
- 在 Javascript 中模拟子类化 - 检查我是如何做到的
- 我应该在JavaScript中将什么连接到子原型属性
- 在 JavaScript 中使用 RegEx 从字符串中删除子字符串的一个出现
- 在 JavaScript 中设置子类的 .prototype
- 在 Javascript 中,如果作为子窗口调用,则使用 focus() 设置的文本区域不起作用
- 在 Javascript 中,如何从父事件处理程序中防止子元素的默认
- 在 JavaScript 中返回数组和子数组
- 在JavaScript中包括动态创建的子页面“isActive()”
- 如何推翻数组结果树从子-父到父-子在Javascript
- 分配数字骰子在Javascript骰子轮转游戏