map()函数内的索引

时间:2016-07-14 02:07:23

标签: javascript functional-programming immutable.js

我错过了一个选项,如何使用map中的List来获取Immutable.js函数中的索引号:

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

{p} Documentation shows map()返回Iterable<number, M>。有什么优雅的方式来满足我的需求吗?

4 个答案:

答案 0 :(得分:331)

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

另请参阅: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map

  

<强>参数

     

回调 -     产生新数组元素的函数,有三个参数:

     

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

     

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

     

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

示例:

var 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 'X';
});

<强>输出:

  

当前迭代次数为:0
当前元素为:h

     

当前迭代是:1
当前元素是:e

     

当前迭代是:2
当前元素是:l

     

当前迭代是:3
当前元素是:l

     

当前迭代是:4
当前元素是:o

答案 1 :(得分:11)

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()的其他参数:

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

例如:

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 :(得分:1)

  • 假设您有一个类似的数组

   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

答案 3 :(得分:0)

使用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);