Javascript 在json.stringify中组合replacer和字段

Javascript 在json.stringify中组合replacer和字段,javascript,json,stringify,Javascript,Json,Stringify,在使用json.stringify时,如何同时使用字段白名单和替换函数 说明如何使用字段列表 具有筛选空值的答案: 基于我正在尝试的代码片段: var fieldWhiteList=['','x1','x2','children']; 设x={ “x1”:0, “x2”:空, “x3”:“xyz”, “x4”:空, 儿童:[ {'x1':2,'x3':5}, {'x1':3,'x3':6} ] } 函数替换程序(键,值){ 如果(值!==null){ if(字段白名单,包括(键))

在使用json.stringify时,如何同时使用字段白名单和替换函数

说明如何使用字段列表

具有筛选空值的答案:

基于我正在尝试的代码片段:
var fieldWhiteList=['','x1','x2','children'];
设x={
“x1”:0,
“x2”:空,
“x3”:“xyz”,
“x4”:空,
儿童:[
{'x1':2,'x3':5},
{'x1':3,'x3':6}
]
}
函数替换程序(键,值){
如果(值!==null){
if(字段白名单,包括(键))
返回值;
}
}
log(JSON.stringify(x,replacer,2))

函数替换程序(键,值){
如果(值!==null){
if(字段白名单,包括(键))
返回值;
}
log('忽略'+key+'('+typeof(key)+'));
}
我得到了输出:

ignoring x2(string) 
ignoring x3(string) 
ignoring x4(string) 
ignoring 0(string) 
ignoring 1(string) 
ignoring 2(string) 
{
  "x1": 0,
  "children": [
    null,
    null,
    null
  ]
} 
这表明键可能是数组索引。在这种情况下,它们都是字符串格式的从0到n的数字,因此:

修正了这个问题

function replacer(key,value) { 
  if (value!==null) {
    if (fieldWhiteList.includes(key)) 
      return value;
    if (key.match('[0-9]+'))
      return value;
  }
  console.log('ignoring '+key+'('+typeof (key)+')');
}
根据预期产出:

ignoring x2(string) 
ignoring x4(string) 
{
  "x1": 0,
  "x3": "xyz",
  "children": [
    {
      "x1": 2,
      "x3": 5
    },
    {
      "x1": 3,
      "x3": 6
    },
    {
      "x1": 4,
      "x3": 7
    }
  ]
}