Map () işlevinin içindeki dizin


291

Ben nasıl içine dizin numarası almak için bir seçenek Eksik mapkullanarak fonksiyonu Listdan Immutable.js:

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

Belgeler bunun map()geri döndüğünü gösterirIterable<number, M> . İhtiyacım olan şeyin zarif bir yolu var mı?


1
Ne istediğin belli değil.
zerkms

Akılda Keep mapolan dizinin yapısını korumak gerekiyordu, sadece değerler değil dizi kendisi dönüştürülmesi gerektiğini.

Yanıtlar:


532

Yöntem indexiçin geçerli yinelemeleri map2. parametresi aracılığıyla alabilirsiniz.

Misal:

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

Çıktı:

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

Ayrıca bkz: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Parametreler

callback - Üç argüman alarak yeni Dizinin bir öğesini üreten işlev:

1) currentValue
Dizide işlenmekte olan geçerli öğe.

2) index
Dizide işlenmekte olan geçerli öğenin dizini.

3) dizi
Dizi haritası çağrıldı.


Haritanın geri arama işlevinin her zaman bir geri dönüş bildirimi olmalı mı? Kodunuzdaki 'X' ne anlama geliyor?
Harsha_K

1
@HarshKanchina mapİşlem, belirli bir dizinin öğeleri arasında yineleme yaparak yeni bir dizi oluşturmak için kullanılır. Sorunuzu cevaplamak için, evet bir iade ifadesi gereklidir ve bu durumda her yinelemede 'X' değerini döndürür. Böylece kodun son ürünü[ 'X', 'X','X','X' ]
Samuel Toh

@Ama 'X' hiçbir yerde tanımlanmamış. Peki ne anlama geliyor? Fonksiyon X'in burada neyi ifade ettiğini nasıl biliyor?
Harsha_K

3
@HarshKanchina 'X'bir dizedir.
Samuel Toh

Bu indeksin 1 ile başlamasını istiyorum, bunu nasıl başarabilirim?
Reema Parakh

27

Array.prototype.map() endeksi:

Bir indeks erişebilir Array.prototype.map()geri arama fonksiyonunun ikinci argüman yoluyla. İşte bir örnek:

const array = [1, 2, 3, 4];


const map = array.map((x, index) => {
  console.log(index);
  return x + index;
});

console.log(map);

Diğer argümanlar Array.prototype.map():

  • Geri arama işlevinin üçüncü argümanı, haritanın çağrıldığı diziyi gösterir
  • İkinci argümanı , geri arama işlevinin değeri Array.map()olacak bir nesnedir this. Bir ok işlevinin anahtar kelimeyle kendi bağlaması olmadığından, geri aramayı bildirmek için normal functionanahtar sözcüğü kullanmanız gerektiğini unutmayın this.

Örneğin:

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 Kullanımı:

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.