我有一个JSON对象,它是一个嵌套数组,格式如下:
{
"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“及其所有子节点?还是“代数”和它所有的子代?然后,“三角”或“代数”将成为新的根节点或父节点。
发布于 2011-09-24 01:30:05
虽然关于JSON查询语言的注释可能会为您提供正确的变通方法,但没有内置的方法来完成这类工作。
实际上,问题是您以一种很难使用的方式构建了您的数据。如果不是
{
name: "key",
children: [...]
}你刚刚就这么做了
{
"key": [...]
}然后,您可以简单地执行myObject["key"]来获得您想要的数组。
例如:
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"];作为额外的奖励,这段时间要短得多!
发布于 2011-09-24 01:34:32
数组的拼接函数应该可以做到这一点。这将做的是删除给定索引处的元素并返回它。
如果你只是想要一个特定分支的快捷方式,你不能也使用
var trig =树‘三角’;
才能到达那里。这不会改变原始对象,buy将为您提供一种更简单的方法来访问深入的节点。
https://stackoverflow.com/questions/7532640
复制相似问题