[javascript] map () 함수 내부의 인덱스

from을 map사용 하여 함수 내에서 색인 번호를 얻는 방법에 대한 옵션이 없습니다 .ListImmutable.js

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

문서는map()반환합니다 Iterable<number, M>. 내가 필요한 것에 우아한 방법이 있습니까?



답변

당신은 현재 반복의 얻을 수있을 것입니다 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

매개 변수

콜백-세 개의 인수를 사용하여 새 배열의 요소를 생성하는 함수입니다.

1) currentValue
배열에서 처리중인 현재 요소입니다.

2) 색인
배열에서 처리중인 현재 요소의 색인.

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():

  • 콜백 함수의 세 번째 인수는 맵이 호출 된 배열을 노출합니다
  • 의 두 번째 인수 는 콜백 함수 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);


답변

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


답변