Javascript jquery循环(.each)
我有一个如下所示的对象:Javascript jquery循环(.each),javascript,jquery,arrays,each,Javascript,Jquery,Arrays,Each,我有一个如下所示的对象: Node{ name: "root", level: 0, children: Array[14], parent: null, id: 0 } 和内部节点。子节点 Node.children[ { name: "child1", level: 1, children: Array[1], parent: root, id: 1 }, {
Node{
name: "root",
level: 0,
children: Array[14],
parent: null,
id: 0
}
和内部节点。子节点
Node.children[
{
name: "child1",
level: 1,
children: Array[1],
parent: root,
id: 1
},
{
name: "child2",
level: 1,
children: Array[1],
parent: root,
id: 2
},
{
name: "child3",
level: 1,
children: Array[2],
parent: root,
id: 3
},
]
和内部节点。子项[1]。子项
Node.children[1].children[
{
name: "child1-1",
level: 2,
children: Array[0],
parent: child1,
id: 4
}
]
我需要的是循环遍历节点对象,并尝试将每个“id
”与给定的值匹配。例如
$.each(Node, function(i, nodes){
$.each(nodes, function (i2, nodes2){
if (nodes2.id == 5){
//do something
}
})
})
试一试
试一试
您需要一个可以递归调用的函数:
function checkNode(node, action, id) {
if (node.id === id)
action(node);
var kids = node.children || [];
$.each( kids,
function(i,n) {
checkNode(n, action, id);
}
);
}
称为:
checkNode(
node,
function(n) { alert(n.name); },
5
);
您需要一个可以递归调用的函数:
function checkNode(node, action, id) {
if (node.id === id)
action(node);
var kids = node.children || [];
$.each( kids,
function(i,n) {
checkNode(n, action, id);
}
);
}
称为:
checkNode(
node,
function(n) { alert(n.name); },
5
);
那么你的问题到底是什么?这看起来很合法,我认为这是最好的办法<代码>$。each()是你完成这项工作的工具。那么你的问题到底是什么?这看起来是正确的,我认为这是最好的方法<代码>$。each()是您的作业工具。