欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

介绍几个js对数据常用的处理方式

程序员文章站 2022-07-09 12:54:47
说明:本文并没有对js处理数据进行深究,本人也不是专业前端人员,只是碰到js处理数据时,对当时的处理数据方式进行记录和总结,后续工作中碰到值得记录的会持续更新。 1、字符串转换成...

说明:本文并没有对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后边是表达式,就要用括号括起来,否则不用括起来。另外一般要判断该层级之前的层级也要存在