在Javascript中提取与树对象相关的数据
Extracting tree object relevant data in Javascript
我有一个Javascript对象,如下所示:
MainData: Object
->SubData: Array[23]
->0:Object
Name : "ABC"
ID: 1
->DataToDisplay :Array[2]
->0:Object
Guid :"18189-90"
Geo : "USA"
->1 : object
Guid : "234-8089"
Geo :"UK"
OtherIrrelevantData : SomeData
->Children:Array[20]
->0:Object
Name:"DEF"
ID:2
->DataToDisplay : Array[1]
->0:object
Guid :"18167-90"
Geo : "Nor"
->Children : Array[5]
->0:Object
Name : "GHI"
ID : 3
->DataToDisplay :Array[2]
->0:Object
Guid :"18189-90"
Geo : "Ger"
->1 : object
Guid : "234-8089"
Geo :"Pol"
otherirrelevantData : SomeData
我的目标是在html页面中递归地只显示数组"DataToDisplay"。例如:如果控件匹配名称:"ABC",我应该能够显示,5地理名称根"ABC"下的所有内容。我需要一个名称为"ABC"answers"DataToDisplay"的对象,以及名称为"DEF"answers"GHI"的对象。
如果数据与名称"GHI"匹配,我需要一个名称为"GHI"的对象,并在其下显示DataToDisplay
我正试图为它使用forach循环,但在添加节点时失败了。从以上信息中提取数据有什么建议吗?
树节点实用程序可以提供您所需要的。请参阅此演示中的"findNodes"函数:https://linsight.github.io/tree-node-utils/demo/dist/
以下是findNodes
在ES6:中的实现
findNodes(nodes, predicate) {
let found = [];
const self = this;
for (const node of nodes) {
if (predicate(node)) {
found = [...found, node];
}
if (self.hasChildren(node)) {
const foundChildren = self.findNodes(node.children, predicate);
found = [...found, ...foundChildren];
}
}
return found;
};
它的作用是:
- 循环通过所有根节点
- 对于它们中的每一个,使用回调函数
predicate
测试根节点 - 如果回调函数通过,则添加到结果数组
- 如果节点具有子级数据,则递归地对所有子级执行相同操作
- 返回结果
在您的情况下,您的predicate
函数类似于:
function canDisplay(node){
return node.Name === 'ABC';
}
相关文章:
- 在控制器和数据对象之间同步数据
- AngularJs指令,该指令创建内部有数据对象的新指令
- 从数据对象数组创建折线图
- Vue.js 数据对象不适用于某些 lodash 函数
- 无法获取带有 .data(el,'dataname').sublev 的数据对象
- React.js+Flux-正确初始化存储中的数据对象
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- Meteor模板数据对象可防止javascript事件触发
- 我该如何访问由gullow灰质插件创建的数据对象(当使用nunjucks编译html文件时)
- 如何使用javascript数据对象?如何通过变量访问条目
- Knockout:为许多数据对象绑定模板引导模式
- 如何将数据对象添加到JSON对象中
- jQuery+php如何在数据对象中返回多个值
- $http put v create - 每个 (JavaScript) 中从 .success() 返回的数据对象有什
- 数据对象内的 D3 循环数组
- 在jQuery的.on()数据对象中访问$(this)
- AngularJS模态窗口数据/对象流
- 关于在 Vue.js 中设置数据对象属性的最佳实践
- 如何构建数据对象以在不知道多少时传递给 ajax
- 如何访问放置在谷歌地图上的geoJSON数据中的数据对象