map()函数内的索引

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

var list2 = list1。地图(mapper =比;{a:映射器。A, b: mapper.index??}) .toList (); < /代码> < / p >

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

716262 次浏览

你将能够通过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

参数

< p >回调 函数,该函数生成一个新数组的元素,包含三个参数:

< p > 1) currentValue < br >

.数组中正在处理的当前元素 < p > <强> 2)指数< br >

.数组中当前正在处理的元素的索引 < br > < p > 3)数组 数组映射被调用

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值。请记住,你必须使用regular 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