Размер шрифта:
javascript - числа - удалить элемент массива js
Play

javascript - числа - удалить элемент массива js

Определите, содержит ли массив значение (18)

Array.prototype.includes ()

Метод includes() определяет, содержит ли массив некоторый элемент, возвращая true или false соответственно.

пример

Служба поддержки

Согласно kangax и MDN поддерживаются следующие платформы:

  • Chrome 47
  • Край 14
  • Firefox 43
  • Опера 34
  • Safari 9
  • Узел 6

Поддержка может быть расширена с помощью Babel (с использованием babel-polyfill ) или core-js . MDN также предоставляет polyfill :

На этот вопрос уже есть ответ:

  • Как проверить, содержит ли массив объект в JavaScript? 43 ответов

Мне нужно определить, существует ли значение в массиве.

Я использую следующую функцию:

Вышеуказанная функция всегда возвращает false.

Значения массива и вызов функции следующие:

Вау, на этот вопрос есть много замечательных ответов.

Я не видел того, что использует подход reduce поэтому я добавлю его в:

Вы можете использовать метод _.indexOf или если вы не хотите включать всю библиотеку Underscore.js в свое приложение, вы можете посмотреть, как они это сделали, и извлечь необходимый код.

Для этого функция jQuery имеет функцию утилиты:

Возвращает индекс value в array . Возвращает -1 если array не содержит value .

Другой вариант - использовать Array.some ( если доступно ) следующим образом:

Анонимная функция, переданная в Array.some , вернет true тогда и только тогда, когда в массиве есть элемент, который идентичен obj . Отсутствие такого элемента, функция не вернет true для любого из элементов массива, поэтому Array.some также вернет значение false .

Если у вас есть доступ к ECMA 5, вы можете использовать какой-либо метод.

Если у вас есть доступ к ECMA 6, вы можете использовать метод includes .

Использование функции массива .map, которая выполняет функцию для каждого значения в массиве, кажется мне самым чистым.

Этот метод может хорошо работать как для простых массивов, так и для массивов объектов, где вам нужно увидеть, существует ли ключ / значение в массиве объектов.

Мой небольшой вклад:

Обычно это метод indexOf (). Вы бы сказали:

Ответ предоставил мне не работу, но это дало мне представление:

Это не идеально, потому что элементы, которые являются одинаковыми вне группировок, могут оказаться подходящими. Например, мой пример

Когда я вызываю эту функцию с полями «g» и «h», содержащими 1 и 2 соответственно, он все равно находит это, потому что результирующая строка из объединения: 1,1,2,2,3,3

Поскольку в моей ситуации сомнительно, что я столкнусь с такой ситуацией, я использую это. Я думал, что поделился бы тем, что кто-то другой не смог бы заставить выбранный ответ работать.

Почти всегда безопаснее использовать библиотеку, такую ​​как lodash просто из-за всех проблем с совместимостью и эффективностью кросс-браузера.

Эффективность, потому что вы можете быть уверены, что в любой момент времени очень популярная библиотека, такая как подчеркивание, будет иметь самый эффективный метод выполнения такой функции полезности.

Если вас беспокоит объем, добавляемый в ваше приложение, включая всю библиотеку, знайте, что вы можете включать функциональность отдельно:

УВЕДОМЛЕНИЕ. В более старых версиях lodash это _.contains() а не _.includes() .

Простейшим решением для функции a будет функция, которая выглядит так:

В идеале вы бы не сделали это автономной функцией, а частью вспомогательной библиотеки:

Теперь, если вы оказались одним из тех неудачливых людей, которым все еще нужно поддерживать IE <9 и, следовательно, не можете полагаться на indexOf , вы можете использовать этот polyfill , который я получил из MDN :

С ECMAScript6 можно использовать Set :

Учитывая реализацию indexOf для IE (как описано без ведома):

Я предпочитаю простоту:

ТЛ; др

пример

Более длинный ответ

Я знаю, что этот вопрос не совсем о том, следует ли расширять встроенные объекты, но попытка OP и комментарии к этому ответу подчеркивают эту дискуссию. Мой комментарий от 12 февраля, 13 цитирует статью, в которой очень хорошо излагаются эти дебаты, однако эта ссылка сломалась, и я не могу отредактировать оригинальный комментарий, потому что прошло слишком много времени, поэтому я включил его here .

Если вы хотите расширить встроенный объект Array с помощью метода contains , возможно, лучшим и наиболее ответственным способом для этого было бы использовать этот полиполк из Array.prototype.includes() . (См. Также this раздел статьи MDN о прототипном наследовании, в котором объясняется, что «единственной веской причиной для расширения встроенного прототипа является поддержка возможностей новых механизмов JavaScript, например Array.forEach и т. Д.» )

Не хотите строгого равенства или хотите выбрать?

Эта программа проверяет, найден ли данный элемент или нет. Id text1 представляет собой идентификатор текстового поля, а поисковый запрос представляет собой элемент, который нужно искать (получил пользователь fron); если вы хотите индекс, используйте значение i

📎📎📎📎📎📎📎📎📎📎