Open Mardanjan opened 4 years ago
// 将下面的对象序列化为JSON字符串,序列化时删除部分属性
var obj = { name : 'mardan', arr: [1,2,3], arr1: [1,2,2] } console.log(JSON.stringify(obj, ((key, value) => { if (key === 'name') { return undefined } if (key === '0') { return undefined } return value })))
// JSON.stringfy的第二个参数是过滤器
function deepCloneObj (obj) { // 根据是数组还是对象,开辟一个新的天地 var objClone = Array.isArray(obj) ? [] : {} if (obj && typeof obj === 'object') { for (key in obj) { // 只拷贝自己的属性,不拷贝继承的属性 if (obj.hasOwnProperty(key)) { // 如果属性不为空且是对象的话递归 if (obj[key] && typeof obj[key] === 'object') { objClone[key] = deepCloneObj(obj[key]) } else { objClone[key] = obj[key] } } } } return objClone }
.stringfy的第二个参数是过滤器
// 将下面的对象序列化为JSON字符串,序列化时删除部分属性
// JSON.stringfy的第二个参数是过滤器
使用JSon深拷贝需要注意的事项
实现深拷贝的几种方法: