介绍几个js对数据常用的处理方式
说明:本文并没有对js处理数据进行深究,本人也不是专业前端人员,只是碰到js处理数据时,对当时的处理数据方式进行记录和总结,后续工作中碰到值得记录的会持续更新。
1、字符串转换成对象
代码:
var obj = json.parse(data); console.log(json.stringify(data.data));
说明:
①php中json_encode()转换返回给前端页面时,用“.”读取不到,是因为返回的是字符串格式,就是最外层带了引号的json数据格式,可以用var obj = json.parse(data);转换成对象,也可以用tp框架中的$this->ajaxreturn();
②另外在vue中,有时候打印对象或者数组时,可能会出现看不懂其数据结构,可以用console.log(json.stringify(data.data));打印出来,再复制出来,格式化结构。
2、js 判断一个 object 对象是否为空
if (json.stringify(data) === '{}') { return false // 如果为空,返回false,数组可以用同样的判断方式 } if (object.keys(object).length === 0) { return false // 如果为空,返回false,object.keys(object)会返回一个空数组[] }
3、数组中添加元素
代码:arr.push();
说明:
可以用arr.push(),在添加元素之前先确认变量arr是一个数组。可以自己定义var arr = [],并可以在数组中添加对象,例如arr.push({"aa":"bb"})。
4、读取对象或这数组中的元素
var test = [{"a":"a"},{"b","b"}]; console.log(test[1].b); console.log(test[1].['b']);//不能用test.1.b
当键名是数字时,不能用“.”点拼接,只能用[]
5、当两个数组要根据各自某一个字段进行排序
举个例子,表格的表头和表中的值,分为了两个数组(如下),表头和表中值要一一对应。另外,在element的表格中,不用排序,其组件已做了排序的工作。
表头1 | 表头2 | 表头3 |
---|---|---|
1 | 2 | 3 |
… | … | … |
数组示例:数组1和数组2要根据key字段一一对应,可以根据这个字段先对两个数组进行排序,然后一一匹配,如冒泡排序等。
[ { "tabelheader":"表头1", "key":"1" }, { "tabelheader":"表头2", "key":"2" }, { "tabelheader":"表头3", "key":"3" } ] [ { "value":"2", "key":"2" }, { "value":"1", "key":"1" }, { "value":"3", "key":"3" } ]
//根据数组中某个键的值冒泡排序,还有其他更优排序方式,这里不一一示例,可以搜索相关算法排序方式。 function bubblesort(arr,sortkey) { //console.time('2.快速排序耗时'); var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j][sortkey] > arr[j+1][sortkey] ) { //相邻元素两两对比 var temp = arr[j+1]; //元素交换 arr[j+1] = arr[j]; arr[j] = temp; } } } //console.timeend('222222.快速排序耗时'); return arr; }
6、转义与反转义兼容写法
代码:
//反转义 function htmldecode(text) { var temp = document.createelement("p"); temp.innerhtml = text; var output = temp.innertext || temp.textcontent; temp = null; return output; } //转义 function htmlencode(html) { var temp = document.createelement ("p"); (temp.textcontent != null) ? (temp.textcontent = html) : (temp.innertext = html); var output = temp.innerhtml; temp = null; return output; }
说明:前端相关朋友说这么写是兼容性写法,我这里就不深究了,亲测可用。
7、剔除数组中的某些元素
目前只找到循环剔除,把需要的元素用push添加到新的数组中。使用splice在循环中有问题,个人猜测是键名原因,未做深究,但我个人觉得肯定有更好方式,因为参照其他语言,都有更为简单的方式,知道的朋友请告知下,谢谢。
8、将数组中字符串转换成整型
var arr = ["1","2","3"]; arr = arr.map(function (data) { return +data; });//此时arr变成[1,2,3]
map是个好方法,我个人对map理解不深,对其使用有些别扭。
9、判断对象或数组中元素是否存在
typeof data.archiverecordpage !== undefined
一搬如果typeof后边是表达式,就要用括号括起来,否则不用括起来。另外一般要判断该层级之前的层级也要存在
上一篇: python实现整数的二进制循环移位
下一篇: 简说设计模式——单例模式