JSON.stringify的妙用,批量删除object的属性

说这个功能其实只是要分享JSON.stringify的第二个参数,先看例子

根据obj的key,批量保留或是删除对应的属性

// 目标对象
const example = {
	name:"不知名前端",
	age:18,
	height:180,
	weight:150,
	sex:'boy',
}

// 保留属性集合
const keepAddr = ['age','name','height'];
// 删除属性集合
const deleteAddr = ['height','sex','age'];

// 定义omit函数
function omit(obj,arr,type ='omit'){
	
	if(typeof obj !== 'object' || !Array.isArray(arr)) return;
	
	let tempArr = [];
	if(type === 'omit'){
		tempArr = Object.keys(obj).filter(i => !arr.includes(i));
	}else{
		tempArr = [...arr];
	}
	
	// 核心方法
	return JSON.parse(JSON.stringify(obj,tempArr));
}

const obj1 = omit(example,keepAddr,'keep');
const obj2 = omit(example,deleteAddr,'omit');

console.log(obj1);
/**
* 	{
*		age:18,
*		height:180,
*		name:"不知名前端"
* 	}
*/
console.log(obj2);
/**
* 	{
*		name:"不知名前端"
*		weight:150
* 	}
*/

JSON.stringify(value,replacer,space)

以上的例子,核心就是利用JSON.stringify的第二个参数,对传入的数组类型的属性集合中的属性进行序列化.
也就是说,第一个参数接收一个对象,第二个参数接收一个数组.它会根据数组中包含的属性对obj进行序列化.也就达到了过滤对象属性的目的.当然这种方式的弊端,和利用JSON.stringify进行深拷贝一样,只能进行简单的拷贝,无法保留函数,原型链等等.

关于JSON.stringify的第二个参数还可以接收一个函数,甚至还有第三个参数,这些我们可以在mdn的文档获得更多的帮助.
MDN文档关于JSON.stringify的详细介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值