猿问

在地图数组中找到一个项目并将其删除

我有一个地图数组,如果它存在,我想从中删除一个元素,这由它的“键”确定。


怎么做?我希望它不慢。保持顺序并不重要。


myMaps = []map[string]interface{} {

  map[string]interface{} {"key": "aaa", "key2": 222, "key3": "aafdsafd"},

  map[string]interface{} {"key": "key_to_delete", "key2": 366, "key3": "333aafdsafd"},

  map[string]interface{} {"key": "cccc", "key2": 467, "key3": "jhgfjhg"}, 

}

for _, x := range myMaps {

  if x["key"] == "key_to_delete" {

    //delete this element as a) key of the map b) the map-element as an element of the array; How?

  }

}

delete(...)功能:


当迭代一个数组时,它的副本是在循环体中传递的。不?那么如何delete(...)从真实数组中删除一个元素?


更新:


我需要知道如何删除 2 类实体,就我而言:


数组的一个元素 - 一张地图

地图的一个元素,具有特定的键

不使用第三方库。


哈士奇WWW
浏览 84回答 1
1回答

繁星淼淼

如果要从地图中删除密钥:for _, x := range myMaps {    if x["key"] == "key_to_delete" {        delete(x, "key")    }}如果你想要的是从数组中删除它变得复杂的地图,如果要保留当前地图,你最好创建第二个数组并插入其中:myFilteredMaps := make([]map[string]interface{}, 0, len(myMaps))for _, x := range myMaps {    if x["key"] != "key_to_delete" {        myFilteredMaps = append(myFilteredMaps, x)    }}myMaps = myFilteredMaps只要len(myMaps)不是太大,这两者都非常快,两者都具有相对于该长度的线性运行时间。
随时随地看视频慕课网APP

相关分类

Go
我要回答