【问题标题】:Remove specfic key in JSON object删除 JSON 对象中的特定键
【发布时间】:2021-05-04 13:02:56
【问题描述】:

我的 JSON 对象看起来像这样

{
value: {
  "0": {
    dummy: "dummy1",
    data : "One",
  },
},
value2: {
  "0": {
    dummy: "dummy2",
    data : "two",
  },
},
value3: {
  "0": {
    dummy: "dummy3",
    data : "three",
  },
}

}

我想要这样的输出

{
value: {
  "0": {
    data : "One",
  },
},
value2: {
  "0": {
    data : "two",
  },
},
value3: {
  "0": {
    data : "three",
  },
}

}

我能够遍历所有对象的根元素但无法遍历数组,尝试使用 map 但没有任何帮助。

【问题讨论】:

  • 您的问题中没有任何 JSON。 JSON 是一些数据结构(通常是对象或数组)的文本表示。您在问题中发布的是数据结构(JavaScript 数组),而不是其 JSON 表示形式。

标签: javascript node.js json ecmascript-6


【解决方案1】:

正如此答案中所述 - https://stackoverflow.com/a/3455416/5867572 - delete operator 允许这样做。

说真的 - 一次搜索不到一分钟就找到了答案。我将其包含在内是因为我不了解删除运算符并假设其他人可能会感兴趣,但 SO 的想法是回答至少有少量研究的问题。

另外 - 如果我这样做 - 我会找到比简单地重复删除运算符 3 次更好的方法 - 但这需要在数据结构中进行更多考虑。

注意

let origData = {
  "value": {
  "1": {
    dummy: "dummy1",
    data : "One"
   }
  },
  "value2": {
    "0": {
      dummy: "dummy2",
      data : "two"
    }
  },
  "value3": {
    "0": {
      dummy: "dummy3",
      data : "three"
    }
  }
}


 delete origData["value"]["1"]["dummy"];
 delete origData["value2"]["0"]["dummy"];
 ddelete origData["value3"]["0"]["dummy"];

 console.log(origData); // logs the original object without the deleted keys / properties

【讨论】:

  • 有没有更好的方法来动态遍历所有对象并删除键?提前致谢
  • 是的 - 但您需要构建数据以支持它 - 查看您拥有的数据 - 带有可变数字的随机键集合 - 更好地组织这些,然后您可以简单地执行循环并使用索引来识别要删除的键。但是你必须自己解决这个问题 - 否则你将永远不会学习如何为你想要实现的功能构建数据:)
【解决方案2】:

这是一个使用object-scan的迭代动态解决方案

// const objectScan = require('object-scan');

const data = {
  value: { 0: { dummy: 'dummy1', data: 'One' } },
  value2: { 0: { dummy: 'dummy2', data: 'two' } },
  value3: { 0: { dummy: 'dummy3', data: 'three' } }
};

const prune = objectScan(['*.0.data'], {
  rtn: 'count',
  filterFn: ({ parent, property }) => {
    delete parent[property];
  }
});

console.log(prune(data));
// => 3

console.log(data);
/* => {
  value: { '0': { dummy: 'dummy1' } },
  value2: { '0': { dummy: 'dummy2' } },
  value3: { '0': { dummy: 'dummy3' } }
} */
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@14.3.0"></script>

免责声明:我是object-scan的作者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-22
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 2014-09-06
    • 2016-03-21
    相关资源
    最近更新 更多