增加in判断
This commit is contained in:
parent
d925a453be
commit
eb97a0b352
30
array.go
30
array.go
@ -239,3 +239,33 @@ func (at *ArrayType) Unique() []interface{} {
|
||||
}
|
||||
return []interface{}{}
|
||||
}
|
||||
|
||||
// In 查询一个值是否在列表里, 在的话, 返回首次出现的索引, 不在返回-1
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:28 2023/7/31
|
||||
func (at *ArrayType) In(input interface{}) int {
|
||||
for idx := 0; idx < len(at.convertResult); idx++ {
|
||||
if nil == input {
|
||||
if nil != at.convertResult[idx] {
|
||||
continue
|
||||
}
|
||||
return idx
|
||||
}
|
||||
if at.convertResult[idx] == nil {
|
||||
continue
|
||||
}
|
||||
if reflect.TypeOf(at.convertResult[idx]).String() != reflect.TypeOf(input).String() {
|
||||
// 类型不同
|
||||
continue
|
||||
}
|
||||
sourceByte, _ := json.Marshal(at.convertResult[idx])
|
||||
inputByte, _ := json.Marshal(input)
|
||||
if string(sourceByte) != string(inputByte) {
|
||||
continue
|
||||
}
|
||||
return idx
|
||||
}
|
||||
return -1
|
||||
}
|
||||
|
@ -24,4 +24,9 @@ func TestArray(t *testing.T) {
|
||||
c := map[string]interface{}{"name": "de"}
|
||||
fmt.Println(reflect.DeepEqual(b, c))
|
||||
fmt.Println(reflect.DeepEqual(a, b))
|
||||
fmt.Println(Array(valInt).In("1"))
|
||||
fmt.Println(Array(valInt).In(1))
|
||||
fmt.Println(Array(valInt).In(2))
|
||||
fmt.Println(Array(valInt).In(7))
|
||||
fmt.Println(Array(valInt).In(20))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user