Skip to content

调试对象

比如,如下代码:

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