JSON.stringfy妙用

JSON.stringfy() 可以将javascript对象转换为JSON字符串

JSON.parse() 可以将JSON字符串转换为对象

let arr = [1,2,3];
JSON.stringify(arr);//'[1,2,3]'
typeof JSON.stringify(arr);//string

let string = '[1,2,3]';
console.log(JSON.parse(string))//[1,2,3]
console.log(typeof JSON.parse(string))//object

在使用JSON.parse()需要注意一点,由于此方法是将JSON字符串转换成对象,所以你的字符串必须符合JSON格式,即键值都必须使用双引号包裹

1.判断数组是否包含某对象,或者判断对象是否相等。

let obj = [
            {name:'yjw'},
            {age:100},
            {job:'ssss'}
        ]
        let obj1 = {job:'ssss'}
        console.log(JSON.stringify(obj).indexOf(JSON.stringify(obj1)) !== -1)

//判断两数组/对象是否相等
let a = [1,2,3],
    b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true

2.让localStorage/sessionStorage可以存储对象。

//
function setLocalStorage(key,val){
    window.localStorage.setItem(key,JSON.stringify(val));
};
//
function getLocalStorage(key){
    let val = JSON.parse(window.localStorage.getItem(key));
    return val;
};
//测试
setLocalStorage('demo',[1,2,3]);
let  a = getLocalStorage('demo');//[1,2,3]

3.实现对象深拷贝

//深拷贝
function deepClone(data) {
    let _data = JSON.stringify(data),
        dataClone = JSON.parse(_data);
    return dataClone;
};
//测试
let arr = [1,2,3],
    _arr = deepClone(arr);
arr[0] = 2;
console.log(arr,_arr)//[2,2,3]  [1,2,3]

 

posted on 2020-12-01 14:48  小武爷  阅读(319)  评论(0编辑  收藏  举报