Filter items by the given key value pair.

@param  string $key
@param  array $values
@param  bool $strict
@return static
172295
public function whereIn( $key, array $values, $strict = true )
	{
		return $this->filter( function ( $item ) use ( $key, $values, $strict )
		{
			return in_array( data_get( $item, $key ), $values, $strict );
		} );
	}
958552
public function keys(?string $search = null, ?bool $strict = null): Collection
    {
        if (func_get_args()['search'] ?? false) {
            return array_keys($this->storage, $search, (bool) $strict);
        }

        return new static(array_keys($this->storage));
    }
309842
public function whereIn($key,$values=array())
    {
        $dstore= new DataStore;
        $dstore->meta($this->metaData);
        foreach ($this->rows as $row) {
            if (in_array($row[$key], $values)) {
                $dstore->append($row);
            }
        }
        return $dstore;
    }
1370115
static function compareValues($array1, $array2, $strict = false) {
		if (count($array1) != count($array2)) return false;

		$array1 = array_values($array1);
		$array2 = array_values($array2);
		sort($array1, SORT_STRING);
		sort($array2, SORT_STRING);

		foreach($array1 as $i=>$r) {
			if ($array2[$i] != $r) return false;
			if ($strict and $array2[$i] !== $r) return false;
		}

		return true;
	}
1309341
public static function contains($list, $value, $strict = false)
    {
        return static::some($list, function ($item) use ($value, $strict) {
            return $strict ? $item === $value : $item == $value;
        });
    }
801334
public static function containsAll(string $haystack, array $needles, bool $strict = true, string $encoding = null) : bool
    {
        return static::contains($haystack, $needles, true, $strict, $encoding);
    }
903626
public function hasValue($value, bool $strict = false): bool
    {
        return in_array($value, $this->data, $strict);
    }
924001
public function filter($values)
    {
        if (is_array($values)) {
            foreach ($values as $key => $value) {
                $values[$key] = $this->filterValue($value);
            }
        }

        return $values;
    }
988705
public static function inArray($needle, $haystack, $strict = NULL)
	{
		return static::is_array($haystack) && in_array($needle, $haystack, $strict);
	}
370548
public function unique($key = null, $strict = false)
    {
        if (! is_null($key)) {
            return parent::unique($key, $strict);
        }

        return new static(array_values($this->getDictionary()));
    }
330120
public function whereNotIn($key, $values, $strict = false)
    {
        $values = $this->getArrayableItems($values);

        return $this->reject(function ($item) use ($key, $values, $strict) {
            return \in_array(Helper::data_get($item, $key), $values, $strict);
        });
    }
416494
public function matches($value, $strict = true)
    {
        return $strict ? $this->value === $value : $this->value == $value;
    }
170905
public function unique($key = null, $strict = false)
    {
        $callback = $this->valueRetriever($key);

        $exists = [];

        return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) {
            if (in_array($id = $callback($item, $key), $exists, $strict)) {
                return true;
            }

            $exists[] = $id;
        });
    }
727578
public function get($key, $strict = true, $default = null) {
        return $this->storage->get($key, $strict, $default);
    }
948675
public function where($property, $value, $strict = true)
    {
        return $this->filter(function ($object) use ($property, $value, $strict) {

            if (!array_key_exists($property, $object->settings)) {
                return false;
            }

            return $strict
                ? $object->settings[$property] === $value
                : $object->settings[$property] == $value;
        });
    }
913226
public function where($key, $value, bool $strict = true): ArrayCollection
    {
        return $this->filter(function ($item) use ($key, $value, $strict) {
            if (!isset($item[$key])) {
                return false;
            }

            return $strict ? $item[$key] === $value : $item[$key] == $value;
        });
    }
419113
public function search($needle, $strict = false)
    {
        return Arr::search($this->items, $needle, $strict);
    }