1.List 结构转换为树形结构node
var getJsonTree = function(data, parentId) {
var itemArr = [];
for (var i = 0; i < data.length; i++) {
var node = data[i];
if (node.parentId == parentId) {
var newNode = {};
newNode.id = node.id;
newNode.name = node.name;
newNode.url = node.url;
newNode.icon = node.icon;
newNode.nodes = getJsonTree(data, node.id);
itemArr.push(newNode);
}
}
return itemArr;
};
$scope.data = getJsonTree($scope.menus, "");
复制代码
2.树形结构转换为List结构数组
deep(node){
let stack = node
let data = []
while(stack.length){
let pop = stack.pop();
data.push(pop.id)
let children = pop.children
if(children){
for(let i = children.length-1; i >=0; i--){
stack.push(children[i])
}
}
}
return data
},
复制代码
3.深拷贝bash
// 数组深拷贝
deepCopy(obj) {
// 只拷贝对象
if (typeof obj !== 'object') return;
// 根据obj的类型判断是新建一个数组仍是一个对象
var newObj = obj instanceof Array ? [] : {};
for (var key in obj) {
// 遍历obj,而且判断是obj的属性才拷贝
if (obj.hasOwnProperty(key)) {
// 判断属性值的类型,若是是对象递归调用深拷贝
newObj[key] = typeof obj[key] === 'object' ? this.deepCopy(obj[key]) : obj[key];
}
}
return newObj;
},
复制代码