DataTo 数据转换

简介

开发软件的时候经常遇到数据转换,比如字符串转数字,ul+li转json,#id转node节点等,以确保程序可按预定的方式执行下去。

axStrToDom

该函数是将字符串转成Dom节点对象。

完整写法:axStrToDom(string),参数说明如下:

  • string:必填项,通常为"<div>伟大的中国</div>"等标签与文字夹杂的字符串。

举例:axStrToDom('<div>伟大的中国</div>'),该例子表明将"<div>伟大的中国</div>"字符串转成可以使用document.querySelector选择器的节点。

axIdToDom

该函数表示选择#id、.className、div等Dom对象,如果本身是Dom则直接返回该Dom。

完整写法:axIdToDom(string),参数说明如下:

  • string:可以填"#id"、".className"、"div"等原生选择器以及Dom对象

举例:axIdToDom('#demo'),该例子结果等于document.querySelector('#demo')。

axArrToDom

该函数将逗号区分的字符串转成数组,并根据数组内容转成Dom集合。

完整写法:axArrToDom(str, parent),可简写axArrToDom(str),参数说明如下:

  • str:必填项,是以英文逗号分隔的字符串,比如"#demo,.china,div"。
  • parent:可选项,如果填写表示只将其子元素转入集合,可以填"#id"、".className"、"div"等原生选择器以及Dom对象

举例:axArrToDom(".china,div", "#demo"),该例子返回#demo这个父节点下的.china和div子元素。

axUlToArr

该函数可以将UL+LI格式的内容转成Json对象,类似[{'name':'china','id':'no01','children':{}}]。

完整写法:axUlToArr(elem,start,hold),参数说明如下:

  • elem:可以填"#id"、".className"、"div"等原生选择器以及Dom对象,elem必须是ul节点对象
  • start:选填项,第一个节点id开始值,start默认为1,也就是说节点的id从1开始计数
  • hold:选填项,如果li中没有指定value属性是否将value等于li文本,默认等于,填true表示抛弃value值

举例:axUlToArr('#demo'),该例子将id为demo的ul节点转成Json对象

axSelectToArr

该函数可以将select下拉菜单的内容转成Json对象,类似[{'name':'china','id':'no01','children':{}}]。

完整写法:axSelectToArr(elem,start),参数说明如下:

  • elem:可以填"#id"、".className"、"div"等原生选择器以及Dom对象,elem必须是select节点对象
  • start:选填项,第一个节点id开始值,start默认为1,也就是说节点的id从1开始计数

举例:axSelectToArr('#demo'),该例子将id为demo的select节点转成Json对象

axListToArr

该函数可以将datalist节点对象转成Json对象,类似[{'name':'china','id':'no01','children':{}}]。

完整写法:axListToArr(elem,start),参数说明如下:

  • elem:可以填"#id"、".className"、"div"等原生选择器以及Dom对象,elem必须是datalist节点对象
  • start:选填项,第一个节点id开始值,start默认为1,也就是说节点的id从1开始计数

举例:axListToArr('#demo'),该例子将id为demo的datalist节点转成Json对象

axStrToArr

该函数可以将字符串转成数组,支持字符串类型有'[]','{},{}','{}'和'a,b,c'。

注意'{}'中属性和值的写法需要用双引号,比如:'{"country":"China"}'

完整写法:axStrToArr(string,dftAttr,dftValue),参数说明如下:

  • string:可以填'[]','{},{}','{}'或'a','a,b,c'
  • dftAttr:选填项,默认属性,是数组。比如['media','caption']
  • dftValue:选填项,与默认属性相对应的默认值,是数组。比如['','测试标题']

举例:axStrToArr('{"country":"China"},{"country":"Rusia"}'),该例子将最终返回一个数组:[{country:"China"},{country:"Rusia"}]

axTplToArr

该函数可以将页面中的HTML模板转成数组。

完整写法:axTplToArr(template, roles, keys, itemNode,dft),参数说明如下:

  • template:必填项,HTML模板。可以填"#id"、".className"、"div"等原生选择器以及Dom对象
  • roles:必填项,HTML模板中的标签属性,是数组类型,比如['src','title']
  • keys:必填项,转成数组后的属性名合集,是数组类型,比如['media','caption']
  • itemNode:选填项,HTML模板中的子节点名称,如果是列表就需要填
  • dft:选填项,转成数组后的属性为空时是否使用默认值,是数组类型,比如['','测试标题']

举例:axTplToArr('#demo', ['src','title'], ['media','caption'], 'figure'),该例子将最终返回一个数组:[{media:"",caption:''},{media:"",caption:''}]

HTML模板如下:

                                <div style="display:none;" id="demo">
                                <figure>
                                    <img src="../demo01.jpg">
                                    <figcaption title>测试1</figcaption>
                                </figure>
                                <figure>
                                    <img src="../demo02.jpg">
                                    <figcaption title>测试2</figcaption>
                                </figure>
                                <figure>
                                    <img src="../demo03.jpg">
                                    <figcaption title>测试3</figcaption>
                                </figure>
                            </div>
                            

axMultiValues

该函数将可以数组或字符串的形式获取checkbox、radio、select和file的值。

该函数默认返回一个数组,比如['book','travel','fitness'],如果讲format设置为string,那么将输出“book,travel,fitness”,如果将进行表单提交操作,通常需要字符串格式。

file类型比较特殊,无法直接将文件路径数据提交到表单,通常需要用一个隐藏域存储文件路径;推荐使用axUpload组件上传文件,该组件可将成功上传的文件的路径以字符串的形式存储在隐藏域。

完整写法:axMultiValues(name, type, format,parent,separator),可简写axMultiValues(name),参数说明如下:

  • name:必填,表单元素或元素的name,其支持多种格式:
    • 1、name为表单元素的name值,string类型
    • 2、name为表单元素的父节点,#id、className或node节点,此时插件会从内部以数组形式取得input的节点
    • 3、name为表单元素的节点数组,array类型
  • type:选填,表单元素类型,默认值为checkbox,可选择radio、select或file
  • format:选填,取得的值最终以什么格式输出,默认是array数组(格式如:['book','travel']),可选择string(格式如:'book,travel')
  • parent:选填,获取表单元素的父层,默认是document
  • separator:选填,数组值转字符串时的分隔符,默认是英文逗号

axArrToTree

该函数可以将多一维数组转成tree数组,通常用于从sql获取数据之后转成tree数组。

完整写法:axArrToTree(arr, start),参数说明如下:

  • arr:必填项,一维数组,注意数组中每一项必须都有id和pId属性
  • start:选填项,顶级父id,如果不填则默认为0

举例:略

axSerialize

该函数可以将表单有name属性的表单域(input、select、textarea)的值转为字符串、json或array。

完整写法:axSerialize(elem,type,separator),参数说明如下:

  • elem:必填项,可以是表单form节点(div等其他父节点也可以),也可以是input节点数组
  • type:选填项,序列化值类型,默认string,可选择json或array,举例说明如下:
    • string:&name=Lily&age=18&city=Beijing
    • json:{name:'Lily',age:18,city:'Beijing'}
    • array:[{name:'name',value:'Lily'},{name:'age',value:18},{name:'city',value:'Beijing'},]
  • separator:多值转成字符串之后的分隔符,默认是英文逗号

举例:略

axStrToFilter

该函数可以将字符串转成可执行的js语句,返回filter结果,是一个数组

完整写法:axStrToFilter(str, source, callback),参数说明如下:

  • str:必填项,字符串语句,filter语句,比如" item.name == 'han' && item.age > 18 ",条件变量名必须是item
  • source:必填项,filter数据变量。
  • callback:选填项,回调函数,支持一个参数,即该函数filter返回值。

举例:略