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;
},
複製代碼