gpt4 book ai didi

javascript - 如何使用javascript根据递归对象中的一个键查找树级别

转载 作者:行者123 更新时间:2023-11-27 23:05:28 24 4
gpt4 key购买 nike

我正在尝试查找递归对象中某个特定键的树级别JavaScript。我需要下面对象中每个标题键的值,并且还可以找到当前对象的级别(如树),但该对象会递归到无穷大。

如何获取指定键的树级别?

Expected Output

这是我的对象

var object = { 
"code": 200,
"data": {
"id": "614b4da4-2910-42c5-8afe-c12521cb0b52",
"title": "Android Quick Start Guide",
"subTitles": [
{
"id": "4dc22d3a-6e10-4938-b538-f86e56afe053",
"title": "Welcome to Android",
"subTitles": [
{
"id": "4dc22d3a-6e10-4938-b538-f86e56afe053",
"title": "Welcome to Android",
"subTitles": []
},
{
"id": "4dc22d3a-6e10-4938-b538-f86e56afe053",
"title": "Welcome to Android",
"subTitles": []
}
]
}
]
},
"message": "created"
};

最佳答案

递归有助于 Array#reduce()和一个适当的起始值,例如新的标签元素 ul

function getValues(ul, a) {
var li = document.createElement('li');
li.innerHTML = a.description;
Array.isArray(a.subTitles) && li.appendChild(a.subTitles.reduce(getValues, document.createElement('ul')));
ul.appendChild(li);
return ul;
}

var object = { "code": 200, "data": { "path": "614b4da4-2910-42c5-8afe-c12521cb0b52", "number": 100, "description": "Android Quick Start Guide", "createdTime": 1460095475590, "id": "614b4da4-2910-42c5-8afe-c12521cb0b52", "title": "Android Quick Start Guide", "isRootTitle": true, "subTitles": [{ "path": "614b4da4-2910-42c5-8afe-c12521cb0b52", "number": 100, "description": "description about the manual 1", "createdTime": 1460095516423, "id": "4dc22d3a-6e10-4938-b538-f86e56afe053", "title": "Welcome to Android", "isRootTitle": false, "subTitles": [{ "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 100, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "About Android Marshmallow", "isRootTitle": false, "subTitles": [] }, { "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 200, "description": "description about the manual 1.2", "createdTime": 1460095672614, "id": "63743f5f-6451-4792-96c6-936b7e8fe820", "title": "What's new in 6.0", "isRootTitle": false, "subTitles": [{ "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 100, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Get Started", "isRootTitle": false, "subTitles": [] }] }] }, { "path": "614b4da4-2910-42c5-8afe-c12521cb0b52", "number": 200, "description": "description about the manual 2", "createdTime": 1460095526821, "id": "42c669ca-d1cb-494c-8c7d-cbef767de919", "title": "Essentials", "isRootTitle": false, "subTitles": [{ "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 100, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Google Now", "isRootTitle": false, "subTitles": [] }, { "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 200, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Tell Google what to do", "isRootTitle": false, "subTitles": [] }] }, { "path": "614b4da4-2910-42c5-8afe-c12521cb0b52", "number": 300, "description": "description about the manual 3", "createdTime": 1460095536268, "id": "1018401c-211a-4cdc-9370-d59d75325da5", "title": "Gesture Typing", "isRootTitle": false, "subTitles": [{ "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 100, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Enter & edit text", "isRootTitle": false, "subTitles": [] }, { "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 200, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Type by speaking", "isRootTitle": false, "subTitles": [] }] }, { "path": "614b4da4-2910-42c5-8afe-c12521cb0b52", "number": 400, "description": "description about the manual 4", "createdTime": 1460095549864, "id": "e58de49c-c261-46cc-aef4-4d75c3fdcc21", "title": "Try some apps", "isRootTitle": false, "subTitles": [{ "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 100, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Enter & edit text", "isRootTitle": false, "subTitles": [] }, { "path": "4dc22d3a-6e10-4938-b538-f86e56afe053", "number": 200, "description": "About Android Marshmallow", "createdTime": 1460095604835, "id": "c431983e-e4e2-4369-8322-4358c2e6db6e", "title": "Type by speaking", "isRootTitle": false, "subTitles": [] }] }] }, "message": "created" };

document.body.appendChild([object.data].reduce(getValues, document.createElement('ul')));

关于javascript - 如何使用javascript根据递归对象中的一个键查找树级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36640185/

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