前言
本文主要介绍一个小的知识点,可能不少同学忽略了,或者不清楚,普及一下。就是我们最常用的JSON.stringify,我们用这个参数,通常是在序列化和反序列化的时候使用,有时候也在简单的,非函数的深copy的时候使用。但是不知道其有第二个和第三个参数。
文档属性普及
JSON.stringify(value[, replacer[, space]])
参数说明:
value:
必需, 要转换的 JavaScript 值(通常为对象或数组)。
replacer:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
第二个参数用法
第二个参数用法很简单,只不过很多朋友不知道这个知识点,这个用法在提交后端数据的时候,非常实用。
例如:后端需要前端为空或者undefined的时候,字段也不要传入。那么我们就会用到了第二个参数的函数了。用法如下:
//前端传入后端参数数据:
var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}
JSON.stringify(params, (key, value) =>{
if(value){
return value
} else {
return undefined
}
})
// 返回的是:"{"name":"haorooms","site":"http://www.haorooms.com"}",然后再JSON.parse一下就可以了
上面的用法是用到了函数,还可以是数组,数组就比较好理解了,代表的是返回固定哪几个?
例如如下:
var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}
JSON.stringify(params, ["name"])
// 输出:"{"name":"haorooms"}"
第三个参数用法
第三个参数通常是用于格式化,例如我么打印一段格式化的字符串
var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}
JSON.stringify(params, null,'\t')
"{
"name": "haorooms",
"site": "http://www.haorooms.com",
"text": "",
"age": null,
"child": ""
}"
这样就可以格式化输出了。
怎么样,小技巧get了吗?
B站视频如下
希望点赞和投币啊!