为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
哈士奇WWW 2022-10-10 16:46:18
我有一个地图数组,如果它存在,我想从中删除一个元素,这由它的“键”确定。怎么做?我希望它不慢。保持顺序并不重要。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 类实体,就我而言:数组的一个元素 - 一张地图地图的一个元素,具有特定的键不使用第三方库。
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

如果要从地图中删除密钥:


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)不是太大,这两者都非常快,两者都具有相对于该长度的线性运行时间。


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号