Javascript 如何通过键引用从JSON对象中删除元素?
我选择这个JSON结构来存储一些数据,因为我认为按键引用每个对象很容易,但我似乎无法按键正确删除元素 JSON对象:Javascript 如何通过键引用从JSON对象中删除元素?,javascript,json,associative-array,Javascript,Json,Associative Array,我选择这个JSON结构来存储一些数据,因为我认为按键引用每个对象很容易,但我似乎无法按键正确删除元素 JSON对象: [{ "a74bb26c-c23f-e711-80da-0050568f4ab2": { "VersionCode": "0ODD6109", "VersionQualifier": "", "ProductID": "WRAP", } }, { "a74fff6c-c23f-e711-80da-005056
[{
"a74bb26c-c23f-e711-80da-0050568f4ab2": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP",
}
}, {
"a74fff6c-c23f-e711-80da-0050568f4ab2": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP",
}
}]
什么时候
及
我可以使用以下工具轻松添加项目:
dataObject = an object with properties
newItem = {}
newItem[key] = dataObj
myJsonObj.push(newItem).
当我将键作为变量时,如何删除项
这不起作用:
delete myJsonObj[key]
var index = myJsonObj.indexOf(node, 0);
if (index > -1) {
myJsonObj.splice(index, 1);
}
这也不起作用:
delete myJsonObj[key]
var index = myJsonObj.indexOf(node, 0);
if (index > -1) {
myJsonObj.splice(index, 1);
}
您的JSON对象构造错误。应该是这样的:
{
"a74bb26c-c23f-e711-80da-0050568f4ab2": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP"
},
"a74fff6c-c23f-e711-80da-0050568f4ab2-unique": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP"
}
}
dataObject = an_object_with_properties;
myJsonObj[key] = dataObj
通知删除了parensis
您可以添加如下项目:
{
"a74bb26c-c23f-e711-80da-0050568f4ab2": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP"
},
"a74fff6c-c23f-e711-80da-0050568f4ab2-unique": {
"VersionCode": "0ODD6109",
"VersionQualifier": "",
"ProductID": "WRAP"
}
}
dataObject = an_object_with_properties;
myJsonObj[key] = dataObj
进行此更改后,您的示例将非常有效:
delete myJsonObj[key]
以下是一个例子:
const dataObject1={
“版本代码”:“0ODD6109”,
“VersionQualifier”:“”,
“产品ID”:“包装”,
}
常量dataObject2={
“版本代码”:“0ODD6109”,
“VersionQualifier”:“”,
“产品ID”:“包装”,
}
常量myJsonObj={}
myJsonObj['key1']=dataObject1
myJsonObj['key2']=dataObject2
log('Before delete',myJsonObj)
删除myJsonObj['key1']
console.log('After delete',myJsonObj)
找到了一个解决方案,但我很想知道是否还有其他解决方案,或者是否有一个更好的结构可以让我的阵列开始:
newJsonObj = myJsonObj.filter(function (el) { return !el[key]; });
您的
json
格式错误。您应该删除ProductID:“WRAP”之后的逗号!obj[keyToBeFilteredOut])代码>您的数组没有任何此类属性。您需要从数组中的对象中删除它。仅供参考的“JSON对象”可能的副本不存在。JSON是Javascript对象的序列化/文本表示,可用于通过API请求等传输对象。在对文本进行反序列化之后,它又是一个普通的Javascript对象(甚至是一个.NET对象或JAVA对象,具体取决于收件人使用的是什么系统)。这是无效的语法。对象不是数组,json仍然无效。后面的逗号使json无效。还有,请检查我的答案