Remove a JSON attribute
如果我有一个JSON对象,请说:
1
| var myObj = {'test' : {'key1' : 'value', 'key2': 'value'}} |
我能把"key1"去掉吗?
1
| {'test' : {'key2': 'value'}} |
- 只是学究一点,那是一个javascript对象,而不是一个"json对象"json是javascript对象的字符串表示。
简单:
- 删除myobj。测试['key1'];也可以。
- 如果x是一个有效的变量名,那么delete myObj['test']['key1']也可以;只要x是一个有效的变量名,就可以交换whatever.x和whatever['x'],因此即使delete myObj['test'].key1也可以。
- fiddle.jshell.net/jr0enbua这里是一个使用delete的示例
- 这是我见过的最好的javascript关键字!
- 值得注意的是,delete关键字会使对象发生变异,这通常不是预期的行为。保持不可变性(对于平面对象)的一种方法是在执行删除之前使用object.assign或spread运算符对Shallow Clone进行操作。
- delete Object.assign({}, myObj.test).key当然,这将需要再次使用这是一个平面克隆,因此,如果对象结构需要,则需要重新添加密钥"test"。
- 在我的代码中工作得很好
- 是否可以软删除该项,使其仍在DOM中,但考虑特定功能?
答案将在选定的工作只要你知道你要到最关键的如果它真的应该被删除,你将需要使用动态[ ]符号相反的点符号。
例如:
1 2 3 4 5
| var keyToDelete ="key1";
var myObj = {"test": {"key1":"value","key2":"value"}}
//that will not work.
delete myObj.test.keyToDelete |
而你将要使用。
1
| delete myObj.test[keyToDelete]; |
带[ ]符号替代符号的点是那些你想要的值被删除前的评估。
- 我喜欢动感的选择。在我自己的例子中,它帮助动态地从JSON对象中删除属性。
- 当检查上面的解决方案时,已经考虑了它是一个变量的解决方案,谢谢你节省了我的时间。
- 嘿,@普拉内洛克,我有一个查询,我得到JSON数组EX: [{国家代码]:"DE","计数":"3"},但是我想要得到像{"de":"3"},但是我没有得到这个输出,请帮助我
- @Brij你的问题与本页上的问题无关。对于你的问题没有太多的背景,我只能说你应该看看lodash.com/docs/4.17.4从lodash的地图。map函数将允许您创建一个新数组,该数组的值为原始数组的CountryCode作为新数组中的键,并且原始数组的count属性的值作为新数组中的值。如果这不起作用,您应该在stackoverflow上开始一个新的问题。您可能还想看看是否可以让服务器以您想要的方式返回响应。
- 如果您不知道该键在JSON中出现在哪里呢?
- @你不需要。排序对于JSON对象来说并不重要。在我的解释中没有太深入,它就像一本字典(或地图)。如果处理的数组包含对象或其他值,则顺序很重要,因为它们没有"键"。数组使用基于位置的索引,这就是为什么您总是使用基于整数的索引访问数组中的值。