javascript - 我必须遍历多级 JSON 并删除某些键

标签 javascript arrays traversal

我有一个如下所示的 JSON。我需要删除 array = ["field", "type", "input"]

中提到的一些键
const result = {
   "condition":"AND",
   "rules":[
      {
         "id":"search_across",
         "operator":"equal",
         "value":1
      },
      {
         "condition":"AND",
         "rules":[
            {
               "id":"Recipe ID",
               "field":"Recipe ID",
               "type":"string",
               "input":"text",
               "operator":"equal",
               "value":"100"
            },
            {
               "condition":"AND",
               "rules":[
                  {
                     "id":"Recipe ID",
                     "field":"Recipe ID",
                     "type":"string",
                     "input":"text",
                     "operator":"equal",
                     "value":"200"
                  }
               ]
            }
         ]
      }
   ]
}

我需要移除第 n 层的 key 。我只能从第一级删除它(如 JSON 中所示)

最佳答案

您可以使用 for...in 循环创建递归函数,以在任何级别按键删除属性。

const data = {"condition":"AND","rules":[{"id":"search_across","operator":"equal","value":1},{"condition":"AND","rules":[{"id":"Recipe ID","field":"Recipe ID","type":"string","input":"text","operator":"equal","value":"100"},{"condition":"AND","rules":[{"id":"Recipe ID","field":"Recipe ID","type":"string","input":"text","operator":"equal","value":"200"}]}]}]}

function remove(data, keys) {
  for(let i in data) {
    if(keys.includes(i)) delete data[i];
    else if(typeof data[i] === 'object') remove(data[i], keys)
  }
}

remove(data, ["field", "type", "input"])
console.log(data)

关于javascript - 我必须遍历多级 JSON 并删除某些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57214834/

相关文章:

php - 多维数组中的array_slice?

Javascript HTML .children 遍历

c# - 哈希集的浅拷贝

rest - PUT 请求的 Pyramid 遍历

javascript - 将 JSP 参数传递给 javascript 在 IE8 中不起作用!

javascript - jQuery 动画左右移动

javascript - 循环数组数据

javascript - 如何将垂直选项卡式内容面板更改为响应式可折叠媒体查询和 jquery?

arrays - 如何使用 Swift 获取 UITableView Cell 的标签文本?

javascript - 为什么我不能将新元素插入新数组?