js线递归问题 本帖最后由 gaowenzhen88 于 2013-06-24 19:28:48 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个 做是可以做 但是很麻烦 而且如果页面上有多处调用的话代码的效率真心不敢恭维建议 先自己把这个数组 结构化为一个树形的对象 细分出parentId 和 childId再依次遍历 这样就比较容易找到了 <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;elsearguments[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> <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;elsearguments[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> div.onclick = function (){传参数}?? 问一个IE和火狐兼容的问题,高手进来指教一下。 求实现打印的一个例子(可运行完整的代码) 判断当前浏览器首页地址的问题 正则 html瘦身 html中有没有页面加载前被出发的事件? 如何得到鼠标当前位置。在线等! 关闭窗口的问题 javascript 下拉菜单从数据库去数据显示在另一个下拉菜单或文本框中(急) 请问,怎样把表单中单选按钮中的值传递给隐藏对象? HighChart时间标签无法正常显示 跪求大神指点,jqgrid怎么实现在页面数据操作完后一次性保存所有数据
代码的效率真心不敢恭维
建议 先自己把这个数组 结构化为一个树形的对象 细分出parentId 和 childId
再依次遍历 这样就比较容易找到了
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>
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>