Ответ 1
includes
(ранее называемый contains
и include
) метод сравнивает объекты по ссылке (точнее, с ===
). Поскольку два объектных литерала {"b": 2}
в вашем примере представляют разные экземпляры, они не равны. Примечание:
({"b": 2} === {"b": 2})
> false
Однако это будет работать, потому что есть только один экземпляр {"b": 2}
:
var a = {"a": 1}, b = {"b": 2};
_.includes([a, b], b);
> true
С другой стороны, where
(устарел в версии 4) и find
сравнивают объекты по их свойствам, поэтому они не требуют ссылочного равенства. В качестве альтернативы includes
вы можете попробовать some
(также псевдоним как any
):
_.some([{"a": 1}, {"b": 2}], {"b": 2})
> true