Index inside map() function

JavascriptFunctional Programmingimmutable.js

Javascript Problem Overview


I am missing a option how to get the index number inside the map function using List from Immutable.js:

Documentation shows that map() returns Iterable<number, M>. Is there any elegant way to what I need?

Javascript Solutions


Solution 1 - Javascript

You will be able to get the current iteration's index for the map method through its 2nd parameter.

Example:

const list = [ 'h', 'e', 'l', 'l', 'o'];
list.map((currElement, index) => {
  console.log("The current iteration is: " + index);
  console.log("The current element is: " + currElement);
  console.log("\n");
  return currElement; //equivalent to list[index]
});

Output:

The current iteration is: 0 <br>The current element is: h
 
The current iteration is: 1 <br>The current element is: e
 
The current iteration is: 2 <br>The current element is: l
 
The current iteration is: 3 <br>The current element is: l 

The current iteration is: 4 <br>The current element is: o

See also: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map > Parameters > > callback - > Function that produces an element of the new Array, taking three arguments:
> > 1) currentValue
> The current element being processed in the array. > > 2) index
> The index of the current element being processed in the array.
> > 3) array
> The array map was called upon.

Solution 2 - Javascript

Array.prototype.map() index:

One can access the index Array.prototype.map() via the second argument of the callback function. Here is an example:

const array = [1, 2, 3, 4];

const map = array.map((x, index) => {
  console.log(index);
  return x + index;
});

console.log(map);

Other arguments of Array.prototype.map():

  • The third argument of the callback function exposes the array on which map was called upon
  • The second argument of Array.map() is a object which will be the this value for the callback function. Keep in mind that you have to use the regular function keyword in order to declare the callback since an arrow function doesn't have its own binding to the this keyword.

For example:

const array = [1, 2, 3, 4];

const thisObj = { prop1: 1 }

const map = array.map((x, index, array) => {
  console.log(array);
  console.log(this)
}, thisObj);

Solution 3 - Javascript

  • suppose you have an array like

   const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    
    arr.map((myArr, index) => {
      console.log(`your index is -> ${index} AND value is ${myArr}`);
    })

> output will be
 index is -> 0 AND value is 1
 index is -> 1 AND value is 2
 index is -> 2 AND value is 3
 index is -> 3 AND value is 4
 index is -> 4 AND value is 5
 index is -> 5 AND value is 6
 index is -> 6 AND value is 7
 index is -> 7 AND value is 8
 index is -> 8 AND value is 9

Solution 4 - Javascript

Using Ramda:

import {addIndex, map} from 'ramda';

const list = [ 'h', 'e', 'l', 'l', 'o'];
const mapIndexed = addIndex(map);
mapIndexed((currElement, index) => {
  console.log("The current iteration is: " + index);
  console.log("The current element is: " + currElement);
  console.log("\n");
  return 'X';
}, list);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZygimantasView Question on Stackoverflow
Solution 1 - JavascriptSamuel TohView Answer on Stackoverflow
Solution 2 - JavascriptWillem van der VeenView Answer on Stackoverflow
Solution 3 - JavascriptGouranga SatapathyView Answer on Stackoverflow
Solution 4 - JavascriptDavidView Answer on Stackoverflow