Проверка нахождения значения в массиве
Обычно, чтобы проверить, находится ли значение в массиве или нет, необходимо выполнить одну из следующих операций:
var arr = ['.js', '.css', '.html'];
if (arr.indexOf('.jsx') === -1) {
// будет выполнено, когда значения нет
}
if (arr.indexOf('.css') >= 0) {
// будет выполнено, когда значение есть
}
Нативного метода для подобных задач пока что нет. Он появится в спецификации ES2016 и будет называться includes. До того, как данный метод будет реализован, для данных целей можно использовать побитовый оператор ~
:
var arr = ['.js', '.css', '.html'];
if (!~arr.indexOf('.jsx')) {
// будет выполнено, когда значения нет
}
if (~arr.indexOf('.css')) {
// будет выполнено, когда значение есть
}
Оператор ~
возвращает число, которое равно ~n == -(n + 1)
: ~1 == -(1 + 1) == -2
, ~0 == -(0 + 1) == -1
, -1 == -(-1 + 1) == 0
, ~10 == -(10 + 1) == -11
. Подробнее о работе ~
и других побитовых операторов можно узнать в этой статье.
Комментарии