function | since v0.0-927 | clojure.core/contains? | Edit |

`(contains? coll v)`

Returns true if the `coll`

contains the lookup key `v`

, otherwise returns false.

Note that for numerically indexed collections like vectors and arrays, this tests if the numeric key is within the range of indexes.

`contains?`

operates in constant or logarithmic time, using `get`

to perform
the lookup. It will not perform a linear search for a value. `some`

is
used for this purpose:

```
(some #{value} coll)
```

Sets and Maps provide key lookups, so `contains?`

works as expected:

```
(contains? #{:a :b} :a)
;;=> true
(contains? {:a 1, :b 2} :a)
;;=> true
(contains? {:a 1, :b 2} 1)
;;=> false
```

Vectors provide integer index lookups, so `contains?`

works appropriately:

```
(contains? [:a :b] :b)
;;=> false
(contains? [:a :b] 1)
;;=> true
```

Lists and Sequences do not provide lookups, so `contains?`

will not work:

```
(contains? '(:a :b) :a)
;;=> false
(contains? '(:a :b) 1)
;;=> false
(contains? (range 3) 1)
;;=> false
```

Source docstring:

Returns true if key is present in the given collection, otherwise returns false. Note that for numerically indexed collections like vectors and arrays, this tests if the numeric key is within the range of indexes. 'contains?' operates constant or logarithmic time; it will not perform a linear search for a value. See also 'some'.

Source code @ clojurescript:src/main/cljs/cljs/core.cljs

```
(defn contains?
[coll v]
(cond
(implements? IAssociative coll)
(-contains-key? coll v)
(native-satisfies? IAssociative coll)
(-contains-key? coll v)
(identical? (get coll v lookup-sentinel) lookup-sentinel)
false
:else
true))
```