map() 函数中的索引

Index inside map() function

我缺少一个选项如何使用 Immutable.js 中的 Listmap 函数中获取索引号:

var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();

Documentation showsmap()returnsIterable<number, M>。有什么优雅的方法可以满足我的需求吗?

您将能够通过 map 方法的第二个参数获取当前迭代的 index

示例:

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]
});

输出:

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

另请参阅: 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.

Array.prototype.map() 索引:

可以通过回调函数的第二个参数访问索引 Array.prototype.map()。这是一个例子:

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

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

console.log(map);

Array.prototype.map()的其他参数:

  • 回调函数的第三个参数公开了调用 map 的数组
  • Array.map() 的第二个参数是一个对象,它将作为回调函数的 this 值。请记住,您必须使用 常规 function 关键字 才能声明回调,因为箭头函数没有自己的绑定到 this关键字。

例如:

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

const thisObj = { prop1: 1 }

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

使用 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);
  • 假设你有一个像
  • 这样的数组

   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