本帖最后由 gaowenzhen88 于 2013-06-24 19:28:48 编辑

解决方案 »

  1.   

    这个  做是可以做  但是很麻烦   而且如果页面上有多处调用的话
    代码的效率真心不敢恭维
    建议  先自己把这个数组 结构化为一个树形的对象  细分出parentId 和 childId
    再依次遍历  这样就比较容易找到了
      

  2.   

    <script>
    var arguments=[{
    id:"001",
    name:"第一单元1", parentid:""
    },{
    id:"002",
    name:"第二单元2",
    parentid:"001"
    },{ 
    id:"003",
    name:"课程级活动3",
    parentid:"002"
    },

    id:"004",
    name:"课程级活动4",
    parentid:""
    },{ 
    id:"005",
    name:"课程级活动5",
    parentid:""
    }];var root = {};
    //尝试在现有数组中建立一个关系树
    for(var i=0;i<arguments.length;i++){
    if(arguments[i].parentid=="")
    arguments[i].parent = root;
    else
    arguments[i].parent = getObjById(arguments, arguments[i].parentid);}//通过id查找节点
    //以下采用遍历算法,如果数据量很大,需要采用其他检索算法提高效率
    function getObjById(arguments, id){
    for(var i=0;i<arguments.length;i++){
    if(arguments[i].id==id)
    return arguments[i];
    }
    }//建立完关系树后,可以通过子节点 arguments[i].parent.parent.... 很容易的检索到父节点了
    alert(arguments[2].id);
    alert(arguments[2].parent.id);
    alert(arguments[2].parent.parent.id);
    //使用 arguments[2].parent == root 可以得知父节点是否是根节点
    alert(arguments[2].parent.parent.parent==root);
    </script>
      

  3.   

    <script>
    var arguments=[{
    id:"001",
    name:"第一单元1", parentid:""
    },{
    id:"002",
    name:"第二单元2",
    parentid:"001"
    },{ 
    id:"003",
    name:"课程级活动3",
    parentid:"002"
    },

    id:"004",
    name:"课程级活动4",
    parentid:""
    },{ 
    id:"005",
    name:"课程级活动5",
    parentid:""
    }];var root = {};
    //尝试在现有数组中建立一个关系树
    for(var i=0;i<arguments.length;i++){
    if(arguments[i].parentid=="")
    arguments[i].parent = root;
    else
    arguments[i].parent = getObjById(arguments, arguments[i].parentid);}//通过id查找节点
    //以下采用遍历算法,如果数据量很大,需要采用其他检索算法提高效率
    function getObjById(arguments, id){
    for(var i=0;i<arguments.length;i++){
    if(arguments[i].id==id)
    return arguments[i];
    }
    }//建立完关系树后,可以通过子节点 arguments[i].parent.parent.... 很容易的检索到父节点了
    alert(arguments[2].id);
    alert(arguments[2].parent.id);
    alert(arguments[2].parent.parent.id);
    //使用 arguments[2].parent == root 可以得知父节点是否是根节点
    alert(arguments[2].parent.parent.parent==root);
    </script>