Hàm JS convert dữ liệu phẳng sang dạng tree với ParentID

  • 164 lượt xem
  • Bài cuối 28 Tháng Mười Hai 2016
admin đăng này 27 Tháng Mười Hai 2016

Ứng dụng của hàm này là convert từ 1 list dữ liệu phẳng với parentID sang dạng cây với thuộc tính children. Dùng để convert dữ liệu từ DB sang tree để đưa vào các plugin hỗ trợ dựng cây trong anglar hay jquery

 function getTree(data, primaryIdName, parentIdName) {
            if (!data || data.length == 0 || !primaryIdName || !parentIdName)
                return [];

            var tree = [],
                rootIds = [],
                item = data[0],
                primaryKey = item[primaryIdName],
                treeObjs = {},
                parentId,
                parent,
                len = data.length,
                i = 0;

            while (i < len) {
                item = data[i++];
                primaryKey = item[primaryIdName];
                treeObjs[primaryKey] = item;
                parentId = item[parentIdName];

                if (parentId) {
                    parent = treeObjs[parentId];

                    if (parent.children) {
                        parent.children.push(item);
                    } else {
                        parent.children = [item];
                    }
                } else {
                    rootIds.push(primaryKey);
                }
            }

            for (var i = 0; i < rootIds.length; i++) {
                tree.push(treeObjs[rootIds[i]]);
            };

            return tree;
        }

3 Tham số như sau:

- data: chính là list dữ liệu cần convert

- primaryIdName: Chính là tên của trường khóa chính ví dụ "ID",

- parentIdName: Chính là tên trường parentID

TEDU

Sắp xếp theo: Chuẩn | Mới nhất | Bình chọn
Kiet Tan Le đăng này 28 Tháng Mười Hai 2016

Làm 1 video demo đi anh, giải thích trong video nữa là tuyệt vời

Tùng Hà Xuân đăng này 28 Tháng Mười Hai 2016

 Thanks ad. Em làm xong chi view động rồi ạ

Close