map () 함수 내부의 인덱스


291

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

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

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


1
당신이 원하는 것이 분명하지 않습니다.
zerkms

map배열의 구조를 유지해야 한다는 것을 명심하십시오. 즉 , 배열 자체가 아닌 값만 변환해야합니다.

답변:


532

당신은 현재 반복의 얻을 수있을 것입니다 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) 배열
배열 맵이 호출되었습니다.


지도의 콜백 함수에 항상 return 문이 있어야합니까? 코드에서 'X'는 무엇을 의미합니까?
Harsha_K

1
@HarshKanchina map연산은 주어진 배열의 요소를 반복하여 새 배열을 구성하는 데 사용됩니다. 귀하의 질문에 대답하려면 그렇습니다. 반환 진술이 필요합니다.이 경우 각 반복마다 값 'X'를 반환합니다. 따라서 코드의 최종 결과는 다음과 같습니다.[ 'X', 'X','X','X' ]
Samuel Toh

@하지만 'X'는 어디에도 정의되어 있지 않습니다. 그래서 무엇을 말하는가? 여기서 X가 무엇을 의미하는지 함수는 어떻게 알 수 있습니까?
Harsha_K

3
@HarshKanchina 'X'는 문자열입니다.
Samuel Toh

이 색인을 1로 시작하고 싶습니다. 어떻게 달성 할 수 있습니까?
Reema Parakh 2018 년

27

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


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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.