Appearance
调试对象
比如,如下代码:
var user = {
name: 'hello word',
age: 18
}
console.log(user)
var user = {
name: 'hello word',
age: 18
}
console.log(user)
打印输出 [object Object]
,因为从对象到字符串的默认转换是 [object Object]
。因此,使用 JSON.stringify
先将对象转化字符串,然后把结果输出控制台。如下:
var user = {
name: 'hello word',
age: 18
}
console.log(JSON.stringify(user))
// {name:"hello word", age:18}
var user = {
name: 'hello word',
age: 18
}
console.log(JSON.stringify(user))
// {name:"hello word", age:18}
存储 localStorage 对象
有时想存储创建的对象,并且在浏览器被关闭后让能恢复该对象。如下所示:
var course = {
name: '三年级语文',
price: 18
}
localStorage.setItem('course', JSON.stringify(course));
var getLocalCourse = JSON.parse(localStorage.getItem('course'));
var course = {
name: '三年级语文',
price: 18
}
localStorage.setItem('course', JSON.stringify(course));
var getLocalCourse = JSON.parse(localStorage.getItem('course'));
数组去重
function unique(arr) {
var obj = {};
arr.forEach(function(item) {
var newData = {};
Object.keys(item).sort().map(function(key) {
newData[key] = item[key];
})
obj[JSON.stringify(newData)] = item; // 键名不会重复
})
arr = Object.keys(obj).map(function(val) {
return JSON.parse(val);
})
return arr;
}
function unique(arr) {
var obj = {};
arr.forEach(function(item) {
var newData = {};
Object.keys(item).sort().map(function(key) {
newData[key] = item[key];
})
obj[JSON.stringify(newData)] = item; // 键名不会重复
})
arr = Object.keys(obj).map(function(val) {
return JSON.parse(val);
})
return arr;
}
JSON.stringify
第二个参数可以决定筛选出来的内容,还有第三个参数,可以参考 MDN
。
实现深拷贝
function deepClone(data) {
var _data = JSON.stringify(data);
var newData = JSON.parse(_data);
return newData;
}
function deepClone(data) {
var _data = JSON.stringify(data);
var newData = JSON.parse(_data);
return newData;
}
判断数组是否包含对象,或者对象是否相等
/* 判断数组是否包含某对象 */
var data1 = [
{ name: 'cherry' },
{ name: 'sunny' }
];
var data2 = { name: 'sunny' };
console.log(JSON.stringify(data1).indexOf(JSON.stringify(data2)) != -1)
// true
/* 判断数组或对象是否相等 */
var a = [1, 2, 3];
var b = [1, 2, 3];
console.log(JSON.stringify(a) == JSON.stringify(b))
// true
/* 判断数组是否包含某对象 */
var data1 = [
{ name: 'cherry' },
{ name: 'sunny' }
];
var data2 = { name: 'sunny' };
console.log(JSON.stringify(data1).indexOf(JSON.stringify(data2)) != -1)
// true
/* 判断数组或对象是否相等 */
var a = [1, 2, 3];
var b = [1, 2, 3];
console.log(JSON.stringify(a) == JSON.stringify(b))
// true