日期:2014-05-16 浏览次数:20312 次
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=""
}];
//如上是无限级的
//我想遍历出如下面,就是一直找到父级的父级
[{
id="001",
name="第一单元1", parentId=""
},{
id="002",
name="第二单元2",
parentId="001"
},{
id="003",
name="课程级活动3",
parentId="002"
}]
<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>