map()函数内部的索引


288

我缺少一个选项,如何map使用Listfrom 获取函数内部的索引号Immutable.js

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

文档显示的是map()回报Iterable<number, M>。有什么优雅的方式可以满足我的需求吗?


1
想要什么并不明显。
zerkms '16

请记住,map应该保留数组的结构,即仅应转换其值,而不要转换数组本身。

Answers:


527

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

例:

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

参量

callback-产生新Array元素的函数,带有三个参数:

1)currentValue
数组中正在处理的当前元素。

2)index
数组中正在处理的当前元素的索引。

3)数组
调用了数组映射。


地图的回调函数是否应该始终具有return语句?“ X”在您的代码中是什么意思?
Harsha_K

1
@HarshKanchina该map操作用于通过迭代给定数组的元素来构造新数组。要回答您的问题,是的,需要返回语句,在这种情况下,它将在每次迭代中返回值“ X”。因此,该代码的最终产品将为[ 'X', 'X','X','X' ]
Samuel Toh,2017年

@但是在任何地方都没有定义“ X”。那是什么意思呢?函数如何知道X在这里指的是什么?
Harsha_K

3
@HarshKanchina 'X'是一个字符串。
塞缪尔·托

我希望该索引从1开始,如何实现呢?
Reema Parakh '19

26

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( function (x, index, array) {
  console.log(array);
  console.log(this)
}, thisObj);


2

使用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);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.