来自JSON.stringify三个参数的一波解释

JSON.stringify的第三个参数

var jsonObj = [
		{
			name: '张三',
			age: 20,
			sex: '男',
			arr: {
				name: '小明',
				age: 100,
				sex: '女'
			}
		},
		{
			name: '李四',
			age: 33,
			sex: '男'
		},
		{
			name: '王无',
			age: 18,
			sex: '男'
		}
	]
var res1 = JSON.stringify(jsonObj);
var res2 = JSON.stringify(jsonObj, null, 2)
console.log(res1);
console.log(res2);
// 输出结果见下图
// 第三个参数2, 也可以是任意的一个数值,如果JSON.stringify只传第一个参数,则会将json格式的数据转换成字符串(res1),但是是无序的,很混乱。如果需要让我们看起来方便,只需将第三个参数设置为任意的一个数字,如果为0则还是混乱的状态。本身第三个参数的含义表示的是 设置每一个字符串 之间的间距。

JSON.stringify的第二个参数,如果是一个 函数

var jsonObj = [
		{
			name: '张三',
			age: 20,
			sex: '男',
			arr: {
				name: '小明',
				age: 100,
				sex: '女'
			}
		},
		{
			name: '李四',
			age: 33,
			sex: '男'
		},
		{
			name: '王无',
			age: 18,
			sex: '男'
		}
	]
// 第二个参数如果是一个函数的话,该函数会进行遍历,且是递归的
var res3 = JSON.stringify(jsonObj, (key, value) => {
  // key表示的每一个对象中的属性名
  // value表示的每一个属性名对应的属性值
  // 如果我们需要对返回的 JSOn格式 的数据做出一些 处理 ,则可以这样写
  if( key == 'age'{ // 此时会对每一个对象中的age属性做出处理
    if (value > 10 && value < 50 ) { // 此处的value对应的是age的属性值
      // 此处return出去的是每一个对象修改属性值之后变成的 ‘新’ 的对象
      return '我是一个新的age'; // 如果age的属性值符合条件,则会使用return出去的这个值来代替
    }
    return value; // 此处一定要return才行,这里return的是数据改变之后的jsonObj的值
  }
},1) // 此处使用第三个参数只是为了让打印出来的数据方便查看,格式化一下数据
console.log(res3)// 打印结果见res1_2

如果JSON.stringify的第二个参数是一个 数组

var jsonObj = [
		{
			name: '张三',
			age: 20,
			sex: '男',
			arr: {
				name: '小明',
				age: 100,
				sex: '女'
			}
		},
		{
			name: '李四',
			age: 33,
			sex: '男'
		},
		{
			name: '王无',
			age: 18,
			sex: '男'
		}
	]
// 如果第二个参数是一个数组,那么只保留该数组中对应的属性名和属性值
var res4 = JSON.stringfiy(jsonObj, ['name'],1)
console.log(res4); //输出结果见res1_3 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值