删除JSON属性

g00*_*0ne 311 javascript json

如果我有一个JSON对象说:

var myObj = {'test' : {'key1' : 'value', 'key2': 'value'}}
Run Code Online (Sandbox Code Playgroud)

我可以删除'key1',因此它变为:

{'test' : {'key2': 'value'}}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ger 528

简单:

delete myObj.test.key1;
Run Code Online (Sandbox Code Playgroud)

  • 那么`删除myObj ['test'] ['key1']`; 你可以互换`whatever.x`和`what ['x']`只要```是一个有效的变量名,所以即使`删除myObj ['test'].key1`也行. (35认同)
  • 删除myObj.test ['key1']; 会工作的. (25认同)
  • https://fiddle.jshell.net/jr0enbua/以下是使用delete的示例 (2认同)
  • 这是我见过的最好的JavaScript关键字! (2认同)
  • 值得注意的是,delete 关键字会改变对象,这通常不完全是预期的行为。保持不变性(对于平面对象)的一种方法是在执行删除之前使用 Object.assign 或 spread 运算符进行浅克隆。 (2认同)

pra*_*oke 105

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

例如:

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

//that will not work.
delete myObj.test.keyToDelete 
Run Code Online (Sandbox Code Playgroud)

相反,你需要使用:

delete myObj.test[keyToDelete];
Run Code Online (Sandbox Code Playgroud)

用[]表示法替换点符号,以便在删除之前评估那些值.