【问题标题】:Remove a JSON attribute [duplicate]删除 JSON 属性 [重复]
【发布时间】:2010-11-16 05:15:21
【问题描述】:

如果我有一个 JSON 对象说:

var myObj = {'test' : {'key1' : 'value', 'key2': 'value'}}

我可以删除 'key1' 使其变为:

{'test' : {'key2': 'value'}}

【问题讨论】:

  • 只是为了迂腐,这是一个Javascript对象,而不是“JSON对象” JSON是Javascript对象的字符串表示。

标签: javascript json


【解决方案1】:

简单:

delete myObj.test.key1;

【讨论】:

  • 删除 myObj.test['key1'];也可以。
  • delete myObj['test']['key1'] 也是如此;只要x 是有效的变量名,您就可以互换whatever.x 和whatever['x'],所以即使delete myObj['test'].key1 也可以工作。
  • 这是我见过的最好的 JavaScript 关键字!
  • 值得注意的是,delete 关键字会改变 Object,这通常不是预期的行为。保持不变性(对于平面对象)的一种方法是在执行删除之前使用 Object.assign 或传播运算符来进行浅层克隆。
  • delete Object.assign({}, myObj.test).key 当然这需要再次,这是一个平面克隆,所以如果对象结构需要,则需要重新添加关键“测试”。
【解决方案2】:

只要您知道要删除的密钥本身,所选答案就可以工作,但如果它应该是真正动态的,则需要使用 [] 表示法而不是点表示法。

例如:

var keyToDelete = "key1";
var myObj = {"test": {"key1": "value", "key2": "value"}}

//that will not work.
delete myObj.test.keyToDelete 

您需要使用:

delete myObj.test[keyToDelete];

用 [] 表示法替换您想要在被删除之前评估的那些值。

【讨论】:

  • 我喜欢活力的选项。在我自己的情况下,它有助于从 json 对象中动态删除属性
  • 在检查上面的解决方案时,已经考虑过如果它是变量的解决方案是什么,感谢您节省了我的时间
  • 嘿@praneetloke 我有一个查询我得到 JSON 数组 例如:[{\"Countrycode\":\"DE\",\"count\":\"3\"}] 但我想要像这样[{“DE”:“3”}],但我没有得到这个输出请帮助我
  • @Brij 您的问题与此页面上的问题无关。没有太多关于您的问题的背景信息,我只能说您应该查看来自 Lodash 的lodash.com/docs/4.17.4#map。 map 函数将允许您创建一个新数组,其中原始数组的 CountryCode 的值作为新数组中的键,并将原始数组中的 count 属性的值作为新数组中的值。如果这没有帮助,您应该在 Stackoverflow 上提出一个新问题。您可能还想看看是否可以让服务器以您想要的方式返回响应。
  • @ggb667 你不需要。对于 JSON 对象,排序无关紧要。无需深入我的解释,它就像 字典(或地图)。如果您正在处理包含对象或其他值的数组,则顺序很重要,因为它们没有“键”。数组使用基于位置的索引,这就是为什么您总是使用基于整数的索引访问数组中的值。
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2015-07-26
  • 2019-03-11
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多