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