JSON.stringify()转换后包含值为undefined数据丢失的问题
最近开发的时候碰到个问题,使用JSON.stringify()转换数据时,如果对象里面的值是undefined,这个值会丢失,
let arr=[] let obj={a:1,b:2} for(let i=0;i<10;i++){ arr.push(obj) } arr.forEach(item=>item.d=undefined) console.log(arr[0]) //{a: 1, b: 2, d: undefined} console.log(JSON.stringify(arr[0])) //{"a":1,"b":2} 复制代码
然后就去看了下json.stringify的转换原理
并不是所有的数据类型的转换JSON都是支持的,因此部分不支持的就会被忽略掉,比如undefined
JSON.stringify(null) //'null' JSON.stringify(true) //'true' JSON.stringify(undefined) //undefined JSON.stringify(function(){}) //undefined JSON.stringify(NaN) //'null'
作者:可可不喝Coco
链接:https://juejin.cn/post/7024008267449761805