@yadscreech

Как передавать функции только индекс от массива?

Как передать функции только индекс элемента массива, а не элемент + индекс.
На примере будет яснее - https://codepen.io/screech/pen/xvPQmM?editors=1111
Или так
<div></div>
<div></div>
<div></div>
<div></div>

let divs = document.querySelectorAll('div');

divs.forEach(function(item,i,arr){
  console.log(item,i,arr);
});
divs.forEach(function(i){
  console.log(i); //Передаётся item, а не index
});
divs.forEach(function(arr){
  console.log(arr); //Передаётся item, а не массив
});

//Выходит что передать только индекс массива можно только так?
divs.forEach(function(item,i){
  console.log(i);
});
  • Вопрос задан
  • 242 просмотра
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Обычно это делают так:
divs.forEach(function(_, i) {
  console.log(i);
});


Можно еще извратиться так:
divs.forEach(function() {
  console.log(arguments[1]);
});

Но в этом нет особого смысла, так как первый вариант короче и его можно использовать со стрелочными функциями.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Есть вариант воспользоваться методом keys для получения итератора, отдающего индексы (доступен как для NodeList, так и для массивов), который затем можно развернуть в массив с помощью spread или Array.from или просто перебрать через for of:

[...divs.keys()].forEach(i => console.log(i));

// или

console.log(Array.from(divs.keys(), i => i * 100));

// или

for (const i of divs.keys()) {
  console.log(i);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы