wg_listToTree小插件 用 javascript 将List数组转换为Tree

简介:

树形菜单在b/s编程中经常碰到,但是并不是每个tree插件都支持List类型的json数据,同时由于后台转换并不如前端节省资源,所以作此插件;

主要功能:

1.可以自定义属性名称;

2.可以多字段排序;

注意:此插件无去重复功能,所以数据可能重复的,请自行去重复之后再行使用;

示例:

<html>
<script type="text/javascript" src="wg_listToTree1.1.js"></script>
<script type="text/javascript">
var tree=[{id:2,pid:1,text:'2',tt:'222'},{id:3,pid:-1,text:'3',asd:'ssss'},
          {id:5,pid:2,text:'5'},{id:4,pid:2,kk:'4'},{id:1,pid:-1,text:'1'},
		  {id:6,pid:3,text:'6'},{id:7,pid:0,text:'7'},{id:9,pid:-2,text:'9'}];
window.onload=function(){
var param={
	list:tree,
   inParams:{
			pid:"pid",
			rootId:-1,
			id:'id',
			},
	outParams:{
			children:"children",
			pid:"pid",
			id:'id',
			kk:'qwe',
			state:'state',
		},
		sort:{
			orderBy:["pid","id"],
			sort:"asc",
		}
 };
var a=wg_listToTree(param);
console.info(a);
};
</script>
</html>

结果:

       

说明:对于无用的干扰数据,插件将会忽略;

使用方法:

1.导入相关js文件;

2.调用函数,传入参数;

函数名称:wg_listToTree( param);其中param是一个json对象,里面包含有参数的具体内容;

分别是list,inParams,outParams,sort四个json对象,分别代表数据,输入参数,输出参数和排序参数;

函数执行后会返回一个tree格式的json对象;

参数介绍:

list:
一个json数组,javascript数组;格式:[{id:2,pid:1,text:‘2‘,tt:‘222‘},{....}]

inParams:一个json对象,包含三个属性;

{ pid:"pid",//父节点的编号的名称

rootId:-1,//根节点的值

id:‘id‘,//当前节点的编号的名称

}

outParams:
一个json对象,可包含多个属性;

{

children:"children",//子节点数组的名称

pid:"pid",//父节点的编号的名称

id:‘id‘,//当前节点编号的名称

kk:‘qwe‘,//list数组对象中,自身有个属性叫kk,想输出名称为‘qwe‘;

state:‘state‘,
//同kk

} //注意:其他list中原有属性,会相应的保留....理论上

sort:一个json对象,用户排序,不指定,或者传入null表示不排序,排序会消耗一定资源

{

orderBy:["pid","id"],//排序中指定的排序字段,和outParams中输出的字段名称一一对应;这里表示用pid排序,如果相等,再用id字段排序

sort:"asc",//排序的方式,asc表示升序,其它表示降序

}

插件下载:

点击打开链接

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 22:50:49

wg_listToTree小插件 用 javascript 将List数组转换为Tree的相关文章

仿javascript中confirm()方法的小插件

10天没有写博客了,不知道为什么,心里感觉挺不舒服的,可能这是自己给自己规定要去完成的事情,没有按照计划执行,总会心里不怎么舒服.最近事情挺多的,终于今天抽空来更新一下博客了. 今天写的是一个小插件.平时我们习惯于使用javascript中自带的confirm()函数做出一个弹窗的效果,但是问题在于这样的弹窗非常不美观,大大降低了网页的整体效果. 好吧废话不多说,首先先来了解一下confirm()函数,下面应该注释得很清楚了. if(confirm("我们去阿里转山吧,好吗?")){/

简单的轮播图小插件

1 (function () { 2 $.fn.moreImg = function () { 3 var allpar = Array.prototype.slice.call(arguments);//获取传过来的参数,打散成数组,如对这个有疑问可以参考我收藏的[优雅代码]深入浅出 妙用Javascript中apply.call.bind的那个文章,作者讲的老好了 4 var elem = allpar[0]; 5 var allImg = allpar[1]; 6 if (allImg.l

VALIDFORM前端小插件实现表单验证;

好开心啊,有了这个小插件就不用在服务器端去写用户输入的东西是否合法,又美观: 这个是官网,使用入门那儿很简单,不如直接改demo; 下载的demo就是这个: 小李子(永奇商城注册页面表单验证): 就是这个,那个邮箱正则验证效果如何加上去的呢: 看demo就知道(把demo里面之中整个demo文件夹拷贝在项目之中,将css之中validform必须的留下,其他删除掉,也就是demo文件夹里面/*==========以下部分是Validform必须的===========*/这一行字下面的css样式

浮动【电梯】或【回到顶部】小插件:iElevator.js

iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null, btns: null, backtop: null, selected: '', sticky: -1, visible: { isHide: 'no', numShow: 0 }, speed: 400, show: function(me) { me.element.show(); }, h

H5柱状图2D小插件

1 概述 前端技术在代码的世界里是不可或缺的,而在里面有个东西是经常使用的那便是 js插件,作为一个小白本章节学习如何封装插件,分享下自己的小东西:如何纯js去自己去封装一个柱状图2D小插件? 2 有点low的效果图如下: 3 主要功能 支持超简单使用 支持数据类型json对象 支持设置左右边距 支持设置柱状图宽度 支持柱状图的颜色 支持动画过渡 当然也可以自己增加背景图片功能使其看起来好看一点 ...后续功能可以自己酌情添加 4实现方式 首先 ,我们需要一个容器,在这里只需要一个div就可以了

JavaScript——引用类型之数组

前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原型链一起写.本博将介绍引用类型Array,即JavaScript中的数组. Array 首先数组到底是什么呢?数组是一段线性分配的内存,它能通过整数计算偏移并访问其中的元素.遗憾的是这个定义是指其他语言中的数组,JavaScript中并没有此类数据结构.作为替代,JavaScript中基于对象创建了

Html小插件

1.天气预报插件 效果图: 源代码: <iframe width="650" scrolling="no" height="60" frameborder="0" allowtransparency="true" src="http://i.tianqi.com/index.php?c=code&id=12&icon=1&num=7"></ifr

实用的 jquery 小插件

1 /** 2 * ---------------------------------------------------- 3 * 实用的 jquery 插件方法 4 * @QQ 617937424 5 * @寄语 不要重复写同样的代码,学会封装成方法,慢慢积累,提高效率. 6 * ---------------------------------------------------- 7 */ 8 9 10 /** 11 * 全选/反选 12 * 13 * html结构: 14 <div i

翻阅《数据结构与算法javascript描述》--数组篇

导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数.然而,这些数字索引在内部被转换为字符串类型,这是因为 JavaScript 对象中的属性名必须是字符串.在内部被归类为数组.由于 Array 在 JavaScript 中被当作对象,因此它有许多属性和方法可以在编程时使用. 使用数组: 1.创建数组 使用 [] 操作符 ,var a