Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过键引用从JSON对象中删除元素?_Javascript_Json_Associative Array - Fatal编程技术网

Javascript 如何通过键引用从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

我选择这个JSON结构来存储一些数据,因为我认为按键引用每个对象很容易,但我似乎无法按键正确删除元素

JSON对象:

[{
    "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无效。还有,请检查我的答案