util.js文件,高效常用函数合集(JS之二)
列表
1. toTree
将数组 转成 树结构的数组
/**
* 将数组Array 转成 tree结构的数据
* @param data 源数组
* @param idName 数组每一项的 id字段的名称 (注意唯一值)
* @param parentIdName 数组每一项的父节点 id字段的名称
* @returns {Array} 返回转换后的树结构数组
*/
function toTree(data, idName, parentIdName) {
if (!data instanceof Array){
return; } //判断data不是数组就返回
data.forEach(function(item) {
//先删除每一项的children字段
delete item.children;
});
const map = {
}; //每一项的id的值当做 map对象的key值
data.forEach(function(item) {
map[item[idName]] = item;
});
const val = [];
data.forEach(function(item) {
//遍历每一项的 在map对象里找到对应的父项 (在map对象里找而不是数组里找减少遍历的次数)
var parent = map[item[parentIdName]];
if (parent) {
//若存在父项,则将当前项添加到 对应的父项的children底下
( parent.children || ( parent.children = [] ) ).push(item);
} else {
//找不到父项 则添加到最顶级
val.push(item);
}
});
return val;
}
用例
var testArr = [
{
id:"1",name:"11",pid:""},
{
id:</