删除 JSON 属性

IT技术 javascript json
2021-02-17 22:30:40

如果我有一个 JSON 对象说:

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

我可以删除“key1”,使其变为:

{'test' : {'key2': 'value'}}
2个回答

简单的:

delete myObj.test.key1;
所以会delete myObj['test']['key1']; 你可以互换whatever.xwhatever['x']只要x是一个有效的变量名,所以甚至delete myObj['test'].key1可以工作。
2021-04-15 22:30:40
delete Object.assign({}, myObj.test).key 当然,这将需要再次这是一个平面克隆,因此如果对象结构需要,则需要重新添加关键的“测试”。
2021-04-19 22:30:40
删除 myObj.test['key1']; 也会起作用。
2021-04-22 22:30:40
值得注意的是,delete 关键字会改变对象,这通常不是预期的行为。保持不变性(对于平面对象)的一种方法是在执行删除之前使用 Object.assign 或 spread 运算符进行浅层克隆。
2021-05-03 22:30:40
这是我见过的最好的 JavaScript 关键字!
2021-05-11 22:30:40

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

例如:

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

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

相反,您需要使用:

delete myObj.test[keyToDelete];

将点符号替换为 [] 符号,用于在删除之前要评估的那些值。

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