分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

JSON.stringify()还可以这么用

发布时间:2023-09-06 02:27责任编辑:白小东关键词:gif

最近做项目的时候遇到一个对象深拷贝的问题,网上看了下发现最为简便的方法是JSON.stringify(),比如你要深拷贝一个对象,可以这么做:

var test={ ???a:"hello", ???b:"world", ???c:[ ???????{dd:"css",ee:"cdd"}, ???????{mm:"ff",nn:"ee"} ???]};var testCopy = JSON.parse(JSON.stringify(test))

这时你对testCopy变量的修改是不会影响到原来的test变量。

然后比较好奇的又去MDN查了下文档,发现JSON.stringify()还可以传可选的参数:

这里重点关注第二个参数,可以传一个函数或者数组。如上面文档所说,如果该参数是函数的话被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;嗯,感觉挺有用处的:

看例子,传函数:

比如,你只是想取该对象属性值为不为字符串的,就可以:

function replacer(key, value) { ?if (typeof value === "string") { ???return undefined; ?} ?return value;}var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};var jsonString = JSON.stringify(foo, replacer);

结果为:{"week":45,"month":7}.

传数组:

JSON.stringify(foo, [‘week‘, ‘month‘]); ?// ‘{"week":45,"month":7}‘, 只保留“week”和“month”属性值。

这么一来,我们可以很方便的对一个复杂对象数据进行简单的过滤筛选,甚至可以省略遍历属性的循环取值。

JSON.stringify()还可以这么用

原文地址:https://www.cnblogs.com/pjl43/p/10165943.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved