You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSON.stringify中忽略特定层级的键值对 | JavaScript

解决方法

直接利用replacer函数里的this上下文区分顶层对象和嵌套对象,就能精准过滤顶层的id,同时保留嵌套层级的id,完全不用创建新对象。

具体代码修改如下:

let student = {
  id: 1, // 要跳过这个id
  name: 'John',
  age: 30,
  isAdmin: false,
  courses: ['html', 'css', 'js'],
  package: {
    id: 121, // 要保留这个id
    name: "starter",
    price: 15
  },
  spouse: null
};

let str = JSON.stringify(student, function(key, value) {
  // 仅当当前键是'id',且所属对象是顶层的student时才忽略
  if (key === 'id' && this === student) {
    return undefined;
  }
  return value;
});

console.log(str);

原理说明

JSON.stringify的replacer函数处理对象属性时,this会指向当前属性所属的父对象:

  • 处理顶层的id时,this指向整个student对象,触发条件返回undefined,让JSON.stringify忽略这个键值对
  • 处理package里的id时,this指向package对象,和顶层的student不相等,直接返回原值保留该键值对

这样就完美实现需求,全程不需要复制或修改原对象。

内容的提问来源于stack exchange,提问作者Sachin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:50:11