我缺少一个选项,如何使用来自mapListImmutable.js函数中获取索引号:文档显示var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList(); 返回map()。文档显示Iterable<number, M>返回q4312079q。有什么优雅的方法可以满足我的需求吗?

评论

想要什么并不明显。

请记住,映射应该保留数组的结构,也就是说,仅应转换其值,而不要转换数组本身。

#1 楼

您可以通过其第二个参数获取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


参数

回调-
函数使用三个参数生成新Array的元素: br />
1)currentValue
正在数组中处理的当前元素。

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

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


评论


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

– Harsha_K
17 Dec 8'在9:09



@HarshKanchina映射操作用于通过迭代给定数组的元素来构造新数组。要回答您的问题,是的,需要返回语句,对于这种情况,它在每次迭代中都返回值“ X”。因此,代码的最终乘积将为['X','X','X','X']

–塞缪尔·托(Samuel Toh)
17年12月11日在1:35



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

– Harsha_K
17年12月11日在9:11

@HarshKanchina'X'是一个字符串。

–塞缪尔·托(Samuel Toh)
17年12月11日在23:45

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

– Reema Parakh
19年1月1日在6:15

#2 楼


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关键字来声明回调。

例如:




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




#3 楼

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


#4 楼


假设您有一个像


这样的数组

    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