Array.map: получить индекс каждого элемента для использования в функции возврата - PullRequest
1 голос
/ 23 мая 2019

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

Вот пример:

function myFunction() {
  var a = [4,7,9];
  //Looking for a way to return ["index 0 : 4", "index 1 : 7", "index 2 : 9"]
  //Only workaround found so far :
  var i = -1;
  Logger.log(a.map(function(el) {i++; return "index " + i + " : " + el}));
}

Я уверен, что есть команда, которая даст мне индекс элемента, но все мои поиски в Google до сих пор были бесплодными.

Ответы [ 4 ]

2 голосов
/ 23 мая 2019

Второй параметр в функции обратного вызова - index, вы можете использовать это

  Array.map((value,index,this))

function myFunction() {
  var a = [4,7,9];
  console.log(a.map((v,i)=> "index " + i + " : " + v));
}

myFunction()
1 голос
/ 23 мая 2019

Вы также можете просто использовать Array.from , поскольку его вторым аргументом является Array.map :

console.log(Array.from([4,7,9], (x, i) => `index ${i} : ${x}`))

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

1 голос
/ 23 мая 2019

map уже дает вам индекс. Обратный вызов получает три параметра:

a.map(function(element, index, array) {return "index " + index + " : " + element})

Вам не нужно объявлять все три (JavaScript не суетится по этому поводу), но они есть, если они вам нужны.

1 голос
/ 23 мая 2019

Вы можете сделать его чище тремя шагами:

  • Использовать второй параметр обратного вызова, переданный в map(), который является индексом элемента.
  • Использовать функцию стрелки и неявно возвращатьзначение
  • Использовать строки шаблона вместо + снова и снова.

var a = [4,7,9];
let res = a.map((x,i) => `index ${i} : ${x}`);
console.log(res)

В приведенном выше коде вы создали функцию, которая не имеет никакого смысла.Эта функция должна принять массив в качестве параметра, а затем записать значение этого конкретного значения.

const myFunction = arr => console.log(arr.map((x,i) => `index ${i} : ${x}`));
myFunction([4,7,9])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...