js 数组赋值操作,修改数组元素的值
来源:互联网 发布:路由器禁止端口 编辑:程序博客网 时间:2024/05/06 11:54
function toTree(rows){ function exists(rows, parentId){ for(var i=0; i<rows.length; i++){ if (rows[i].id == parentId) return true; } return false; } var nodes = []; for(var i=0; i<rows.length; i++){ var row = rows[i]; if (!exists(rows, row.parentId)){ nodes.push({ id:row.id, text:row.text, state:'closed' }); } } var toDo = [];
//如下的for循环 是把nodes数组对象的引用赋值给了toDo ,功能类似:toDo = nodes; 下面的操作修改了node的值,其实是修改了nodes中的元素的值. for(var i=0; i<nodes.length; i++){ toDo.push(nodes[i]); } while(toDo.length){ var node = toDo.shift(); for(var i=0; i<rows.length; i++){ var row = rows[i]; if (row.parentId === node.id){ var child = {id:row.id,text:row.text,attributes:{href:row.href}};// alert(JSON.stringify(node.children)); if (node.children){ node.children.push(child); } else { node.children = [child]; } toDo.push(child); } } } return nodes; //最终结果是nodes的内容变化了. }