JSON.stringify() 这个 API 想必大家都用过,可以帮助我们将数据解析成字符串类型,如下是个例子:

const obj = { name: 'foo', level: 'low', age: '100', money: 'empty'}JSON.stringify(obj)// "{"name":"foo","level":"low","age":"100","money":"empty"}"

想必这样的写法大家都知道,但是其实 JSON.stringify 总共接受三个参数。

第二个参数可以传入一个数组或者函数。

我们先来看看传入数组的话结果会是什么?

JSON.stringify(obj, ['name', 'age'])// "{"name":"foo","age":"100"}"

当我们传入数组时候,只有数组内的属性名才会被正常序列化。

那么当第二个参数传入函数会发生什么呢?

const obj1 = { name: new Set([1]) }JSON.stringify(obj1, (key, value) => { return value instanceof Set ? [...value] : value})// 正常序列化是 "{"name":{}}"// 例子中的输出为 "{"name":[1]}"
<