首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript --拆分层次结构数组或JSON对象的一个分支

JavaScript --拆分层次结构数组或JSON对象的一个分支
EN

Stack Overflow用户
提问于 2011-09-24 01:22:00
回答 2查看 751关注 0票数 0

我有一个JSON对象,它是一个嵌套数组,格式如下:

代码语言:javascript
运行
复制
{
    "name": "Math",
    "children": [
        {
            "name": "Trigonometry",
            "children": [
                {
                    "name": "Right Triangles and an Introduction to Trigonometry",
                    "children": [
                        {
                            "name": "The Pythagorean Theorem",
                            "children": [
                                {
                                    "name": "The Pythagorean Theorem",
                                    "size": 30
                                },
                                {
                                    "name": "Pythagorean Triples",
                                    "size": 52
                                },
                                {
                                    "name": "Converse of the Pythagorean Theorem",
                                    "size": 13
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "Algebra",
            "children": [
                {
                    "name": "Equations and Functions",
                    "children": [
                        {
                            "name": "Variable Expressions",
                            "children": [
                                {
                                    "name": "Evaluate Algebraic Expressions",
                                    "size": 26
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

整个数组实际上要大得多,并且可以在here中看到。我正在使用它来使用D3.js (或者其他库)构建交互式图形和图表。因为它太大了,所以我希望能够按分支拆分数组。换句话说,就是分割出数组的特定分支。

例如,有没有一种方法可以直接拉出节点"Trigonometry“及其所有子节点?还是“代数”和它所有的子代?然后,“三角”或“代数”将成为新的根节点或父节点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-24 01:30:05

虽然关于JSON查询语言的注释可能会为您提供正确的变通方法,但没有内置的方法来完成这类工作。

实际上,问题是您以一种很难使用的方式构建了您的数据。如果不是

代码语言:javascript
运行
复制
{
    name: "key",
    children: [...]
}

你刚刚就这么做了

代码语言:javascript
运行
复制
{
    "key": [...]
}

然后,您可以简单地执行myObject["key"]来获得您想要的数组。

例如:

代码语言:javascript
运行
复制
var math = {
    "Trigonometry": {
        "Right Triangles and an Introduction to Trigonometry": {
            "The Pythagorean Theorem": {
                "The Pythagorean Theorem": 30,
                "Pythagorean Triples": 52,
                "Converse of the Pythagorean Theorem": 13
            }
        }
    },
    "Algebra": {
        "Equations and Functions": {
            "Variable Expressions": {
                "Evaluate Algebraic Expressions": 26
            }
        }
    }
};
var trigonometry = math["Trigonometry"];
var expressionsAndFunctions = math["Algebra"]["Expressions and Functions"];

作为额外的奖励,这段时间要短得多!

票数 1
EN

Stack Overflow用户

发布于 2011-09-24 01:34:32

数组的拼接函数应该可以做到这一点。这将做的是删除给定索引处的元素并返回它。

如果你只是想要一个特定分支的快捷方式,你不能也使用

var trig =树‘三角’;

才能到达那里。这不会改变原始对象,buy将为您提供一种更简单的方法来访问深入的节点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7532640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档