JSON.stringify()还有这种用法,涨知识了

59 阅读1分钟

JSON.stringify()的第一个参数为要转化的数据,这也是我们常用的方法,其实JSON.stringify一共可以传入三个参数,第一个参数就是我们正常转化的数据

示例:
  let obj = {
    name: "坤坤",
    age: 2.5,
    hairStyle: "中分",
  };
  console.log(JSON.stringify(obj));
  {"name":"坤坤","age":2.5,"hairStyle":"中分"}

而第二个参数,我们可以传入一个数组,在我们第二个参数传入为数组时,JSON.stringify会根据我们所传入的key,来生成新的字符串对象,如果传入一个空数组,则返回空对象

示例:
    console.log(JSON.stringify(obj, ["name", "age"]));
    {"name":"坤坤","age":2.5}

第二个参数也可以是一个回调函数,当我们传入一个回调函数时,会接受到两个参数(key,value),分别对应对象的key和val, 我们在设置key = 'name' 时返回undefined 此时返回字符串对象就缺失了name属性

示例:
  let obj = {
    name: "坤坤",
    age: 2.5,
    hairStyle: "中分",
  };
  console.log(
    JSON.stringify(obj, (key, value) => {
      if (key === "name") {
        return undefined;
      }
      return value;
    })
  );
  {"age":2.5,"hairStyle":"中分"}

在我们正常编写JSON.stringify时,代码会进行格式化,不便查看,此时我们可以使用JSON.stringify的第三个参数来调整输出代码的缩进, 此时代码变成了我们熟识的缩进式,方便我们查看代码,而所传的数值,则就是缩进的行数

示例:
  let obj = {
    name: "坤坤",
    age: 2.5,
    hairStyle: "中分",
  };
  console.log(JSON.stringify(obj, null, 2));
  {
  "name": "坤坤",
  "age": 2.5,
  "hairStyle": "中分"
  }