Как получить индекс массива javascript
Перейти к содержимому

Как получить индекс массива javascript

  • автор:

Индекс массива по значению JS

В данной статье мы рассмотрим различные способы получения индекса массива по значению в JavaScript.

Через цикл for

Самый простой способ получить индекс элемента массива — это использовать цикл for и сравнивать каждый элемент массива с заданным значением:

let arr = [1, 2, 3, 4, 5]; let val = 3; for (let i = 0; i < arr.length; i++) < if (arr[i] === val) < console.log(i); // индекс элемента break; >>

Метод indexOf

Метод indexOf возвращает индекс первого вхождения элемента в массиве:

let arr = [1, 2, 3, 4, 5]; let val = 3; let pos = arr.indexOf(val); console.log(pos);

Метод findIndex

Метод findIndex выполняет функцию для каждого элемента массива и возвращает индекс первого элемента, для которого функция возвращает истину:

let arr = [1, 2, 3, 4, 5]; let val = 3; let pos = arr.findIndex(elem => elem === val); console.log(pos);

Array.prototype.findIndex()

Метод findIndex() возвращает индекс в массиве, если элемент удовлетворяет условию проверяющей функции. В противном случае возвращается -1.

Также смотрите метод find() , который возвращает значение найденного в массиве элемента вместо его индекса.

Синтаксис

arr.findIndex(callback[, thisArg])

Параметры

Функция, вызывающаяся для каждого значения в массиве, принимает три аргумента:

Текущий обрабатываемый элемент в массиве.

Индекс текущего обрабатываемого элемента в массиве.

Массив, по которому осуществляется проход.

Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback .

Описание

Метод findIndex вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true . Если такой элемент найден, метод findIndex немедленно вернёт индекс этого элемента. В противном случае, метод findIndex вернёт -1. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

Если в метод findIndex был передан параметр thisArg , при вызове callback он будет использоваться в качестве значения this . В противном случае в качестве значения this будет использоваться значение undefined .

Метод findIndex не изменяет массив, для которого он был вызван.

Диапазон элементов, обрабатываемых методом findIndex , устанавливается до первого вызова функции callback . Элементы, добавленные в массив после начала выполнения метода findIndex , не будут посещены функцией callback . Если существующие, непосещение элементы массива изменяются функцией callback , их значения, переданные в функцию, будут значениями на тот момент времени, когда метод findIndex посетит их; удалённые элементы посещены не будут.

Примеры

Пример: поиск индекса простого числа в массиве

Следующий пример находит в массиве индекс элемента, являющийся простым числом (либо возвращает -1, если в массиве нет простых чисел).

function isPrime(element, index, array)  var start = 2; while (start  Math.sqrt(element))  if (element % start++  1)  return false; > > return element > 1; > console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, не найдено console.log([4, 6, 7, 12].findIndex(isPrime)); // 2 

Полифил

Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий кусочек кода в качестве полифила:

if (!Array.prototype.findIndex)  Array.prototype.findIndex = function (predicate)  if (this == null)  throw new TypeError( "Array.prototype.findIndex called on null or undefined", ); > if (typeof predicate !== "function")  throw new TypeError("predicate must be a function"); > var list = Object(this); var length = list.length >>> 0; var thisArg = arguments[1]; var value; for (var i = 0; i  length; i++)  value = list[i]; if (predicate.call(thisArg, value, i, list))  return i; > > return -1; >; > 

Спецификации

Specification
ECMAScript Language Specification
# sec-array.prototype.findindex

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • Array.prototype.find() Экспериментальная возможность
  • Array.prototype.indexOf()

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 20 янв. 2024 г. by MDN contributors.

Your blueprint for a better internet.

Как узнать индекс элемента в массиве js

Чтобы узнать индекс элемента в массиве в JS, можно воспользоваться методом indexOf() . Этот метод вернёт первый индекс, по которому указанный элемент находится в массиве:

const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison')); // => 1 

Если такого элемента в массиве нет, то метод вернет -1

console.log(beasts.indexOf('giraffe')); // => -1 

19 октября 2022

Помимо стандартных возможностей JS, узнать индекс элемента массива можно с помощью метода из библиотеки Lodash _.findIndex():
Метод возвращает индекс первого элемента в массиве, который удовлетворяет условию. Если ни один из элементов не удовлетворяет условию поиска, возвращается -1. Этот метод отлично ладит с массивами, элементами которых являются объекты. Обратимся к примеру ниже:

const users = [  'user': 'kris', 'active': false >,  'user': 'john', 'active': false >,  'user': 'luk', 'active': true > ]; const findUserItem = _.findIndex(users,  'user': 'john', 'active': false >); console.log(findUserItem); // => 1 - индекс искомого элемента 

В примере выше всё понятно, давайте посмотрим возможности этого метода в следующем примере.

const findUserItem = _.findIndex(users, ['active', false]); console.log(findUserItem); // => 0 

В примере выше нам не важно имя пользователя, нам просто нужно найти пользователя, у которого был бы неактивный статус. И данный метод нам в этом отлично поможет.

Как получить индекс массива javascript

Метод findIndex() возвращает индекс первого элемента массива, удовлетворяющего условиям заданной функции, или возвращает -1.

// функция возврата нечётного числа function isOdd(element) < return element % 2 !== 0; >// объявляем массив целых чисел let numbers = [2, 8, 1, 3, 4]; // возвращяем индекс первого нечётного числа в массиве let firstOdd = numbers.findIndex(isOdd); console.log(firstOdd); // Вывод в консоль: 2

Синтаксис findIndex()

Синтаксис метода findIndex() следующий:

arr.findIndex(callback(element, index, arr), thisArg);

Где arr — это массив.

Параметры findIndex()

Метод findIndex() принимает:

  • callback
    • функцию, которая будет вызываться для каждого элемента массива. Принимает:
      • element
        • текущий обрабатываемый элемент в массиве.

        Возвращаемое значение findIndex()

        • Возвращает индекс первого элемента в массиве, который удовлетворяет заданной функции.
        • Возвращает -1, если ни один из элементов не удовлетворяет функции.

        Примеры

        Пример 1: Используем метод findIndex()

        // функция возврата чётных чисел function isEven(element) < return element % 2 == 0; >// объявляем массив целых чисел let numbers = [1, 45, 8, 98, 7]; // возвращаем индекс первого чётного числа в массиве let firstEven = numbers.findIndex(isEven); console.log(firstEven); // 2

        Вывод в консоль:

        В приведенном выше примере мы использовали метод findIndex() , чтобы найти индекс первого четного числа в массиве numbers .

        isEven() — это функция, которая возвращает четное число. Мы передали isEven() в качестве callback функции в метод findIndex() как — numbers.findIndex(isEven) .

        Метод возвращает 2 — индекс первого четного числа в массиве numbers , т.е. 8.

        Пример 2: findIndex() со стрелочной функцией

        // объявляем массив let days = ["Sunday", "Wednesday", "Tuesday", "Friday"]; // возвращаем первый индекс у 'Wednesday' в массиве let index = days.findIndex((day) => day === "Wednesday"); console.log(index); // 1

        Вывод в консоль:

        Здесь мы передали стрелочную функцию в качестве callback функции в методе findIndex(). Метод возвращает первый индекс ‘Wednesday’.

        Пример 3: findIndex() с элементами объекта

        // объявляем объект const team = [ < name: "Bill", age: 10 >, < name: "Linus", age: 15 >, < name: "Alan", age: 20 >, < name: "Steve", age: 34 >, ]; // функция, возвращающая возраст больший или равный 18 function isAdult(member) < return member.age >= 18; > // возвращает индекс первого элемента, который // больше или равен 18 console.log(team.findIndex(isAdult)); // 2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *