Подтвердить что ты не робот

JavaScript Array # map: индексный аргумент

Мой вопрос о методе map массивов в JavaScript.

Вы можете передать ему функцию, которая принимает второй аргумент, индекс текущего элемента обрабатываемого массива, но... с какой целью? Что происходит, когда вы это делаете и какая разница, когда вы этого не делаете?

Что бы вы использовали эту функцию для?

4b9b3361

Ответ 1

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

Пример:

[1,2,3].map(function(o, i){
    console.log(i);
    return 0;
});

[1,2,3].map(function(o){
    console.log(arguments[1]); // it still there
    return 0;
});

Вывод:

0
1
2
0
1
2

Демо: http://jsfiddle.net/Guffa/k4x5vfzj/

Ответ 2

Иногда имеет значение индекс элемента. Например, эта карта заменяет каждый второй элемент 0:

var a = [1, 2, 3, 4, 5, 6];
var b = a.map(function(el, index) {
    return index % 2 ? 0 : el;
});
console.log(b);

Вывод:

[1, 0, 3, 0, 5, 0]

Ответ 3

Ниже приведено описание функции map:

arr.map(callback[, thisArg])

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

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

     

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

     

array
          Карта массива была вызвана.

Функция карты принимает функцию обратного вызова в качестве аргумента (а не как индекс как аргумент, как первоначально указывалось в вопросе до его редактирования). Функция обратного вызова имеет индекс как параметр - обратный вызов вызывается автоматически, поэтому вы не предоставляете индекс самостоятельно. Если вам нужно только текущее значение, вы можете опустить другие параметры.