【问题标题】:jquery Looping (.each)jquery循环(.each)
【发布时间】:2013-09-03 17:58:59
【问题描述】:

我有一个如下所示的对象:

Node{
     name: "root",
     level: 0,
     children: Array[14],
     parent: null,
     id: 0
}

Node.children...

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
    },
]

在 Node.children[1].children 内部 ...

Node.children[1].children[
        {
         name: "child1-1",
         level: 2,
         children: Array[0],
         parent: child1,
         id: 4
        }
]

我需要的是遍历 Node 对象并尝试将每个“id”与给定的值匹配。比如……

$.each(Node, function(i, nodes){
    $.each(nodes, function (i2, nodes2){
        if (nodes2.id == 5){
            //do something
        }
    })
})

【问题讨论】:

  • 那么你的问题到底是什么?
  • 这看起来合法,我认为这是最好的方法。 $.each() 是您的工作工具。

标签: javascript jquery arrays each


【解决方案1】:

您需要一个可以递归调用的函数:

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
);

【讨论】:

    【解决方案2】:

    试试

    $.each(Node.children, function(i, inode){
        $.each(inode.children, function (i2, inode2){
            if (inode2.id === 5){
                //do something
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2013-08-12
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多