如何确定数组是否包含具有等于给定值的属性的对象

问题描述

我有一个这样的数组,它将来自 API 的响应。

[
    {
        "id": "F1eOrsr3g7gad6","created_at": 1591951315,"url": "https://example.com","secret": "1234","secret_exists": true
    },{
        "id": "FintcvTBaYwPz2","created_at": 1591953315,"url": "http://example.com","secret": "34532","secret_exists": true
    }
]

如何检查该数组是否具有“F1eOrsr3g7gad6”值?

我曾尝试编写一个函数,如果该值存在,它将返回索引值。

func isExists(key string,value string,data []map[string]interface{}) (result int) {
    result = -1
    for i,search := range data {
        if search[key] == value {
            result = i
            break
        }
    }
    return result
}
var value string = "FintcvTBaYwPz2"
var key string = "id"
result := isExists(key,value,data) // here data will be the array which I want to pass.
fmt.Println("Result: ",result)

解决方法

您已经完成了所有艰苦的工作,只需更改函数的签名以返回 bool 而不是索引,并返回 truefalse

func isExists(key string,value string,data []map[string]interface{}) (exists bool) {

    for _,search := range data {
        if search[key] == value {
            return true
        }
    }
    return false
}

https://play.golang.org/p/lJGwa6pZaX5