Меня смущает разница между двумя функциями indexOf и поиском индекса в массиве.
В документации говорится
findIndex - возвращает индекс первого элемента в массиве, где предикат истинен, и -1 в противном случае.
и
indexOf - возвращает индекс первого вхождения значения в массив.
javascript
Рахул Сингх
источник
источник
Ответы:
Основное отличие - параметры этих функций:
Array.prototype.indexOf()
ожидает значение в качестве первого параметра. Это делает его хорошим выбором для поиска индекса в массивах примитивных типов (таких как строка, число или логическое значение).Array.prototype.findIndex()
ожидает обратного вызова в качестве первого параметра. Используйте это, если вам нужен индекс в массивах с непримитивными типами (например, объекты) или ваше условие поиска более сложное, чем просто значение.По ссылкам приведены примеры обоих случаев.
источник
indexOf
будет работать поиск предметов. Важно понимать, что он принимает один объект, а не только значение, и сравнивает по равенству, а не по значению. Согласно документам Mozilla:indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
пожалуйста, изменитеfindIndex
объяснение, включив в него только ветвь «или ваше условие поиска более сложное, чем просто одно значение или ссылка», чтобы исправить это, поскольку оно изначально сбивало меня с пути. Спасибо![{a:1}].indexOf({a:1})
возвращается,-1
хотя объект кажется таким же (но это не так). Не уверен, что эта информация полезна для ответа, так как она может сбивать с толку. Если вам нужно узнать больше о точном поведении языка, вы должны прочитать спецификацию..indexOf(NaN)
он всегда будет возвращаться,-1
потому чтоNaN==NaN
всегдаfalse
.NaN
является примитивным типом, потому чтоtypeof NaN
есть,number
и так есть,null
иundefined
поэтому я бы исправил это, чтобы не говорить, чтоindexOf
работает с примитивными типамиFindIndex полезен, если вы хотите найти первый элемент, соответствующий вашему предикату: в примере W3C есть числа и совпадения, если возраст клиента выше или равен 18.
приставка:
Вы можете найти точный индекс элемента с помощью функции indexOf для Array, но вы не можете передать предикат. Это быстрее, если вы хотите найти определенный элемент:
возвращает:
Подсчет индекса начинается с 0, поэтому индекс первого элемента равен 0.
источник
Основное отличие - параметры этих функций:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
источник
Вы также можете использовать
includes
:но я предпочитаю
indexOf
метод:источник
indexOf
тоже намного быстрее.Другое отличие состоит в том, что с помощью findIndex () пользователь может применить некоторую функцию и найти элемент в массиве, который проходит проверку.
Но то же самое с оператором indexOf () . Пользователь может просто проверить, существует ли конкретный элемент в массиве или нет.
источник
Просто - какую структуру массива вы используете?
findIndex()
,;indexOf()
.«Я хочу найти индекс в массиве объектов с ключом« Оранжевый ».
«Я хочу найти индекс в простом массиве ».
источник
Вы можете попробовать коды ниже: -
источник