جافاسكريبت - الفهرس داخل دالة map()


أنا أفتقد خيارًا حول كيفية الحصول على رقم الفهرس داخل دالة map باستخدام List من Immutable.js:

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

تُظهر الوثائق أن map() تُرجع Iterable<number, M>، هل هناك طريقة أنيقة لما أحتاجه؟

الإجابة رقم 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

المعلمات

الدالة الراجعة - دالة تنتج عنصرًا في المصفوفة الجديدة، تأخذ ثلاثة وسائط:

  1. currentValue
    العنصر الحالي الذي يتم معالجته في المصفوفة.

2) الفهرس
فهرس العنصر الحالي الذي يتم معالجته في المصفوفة.

  1. المصفوفة
    تم استدعاء دالة map للمصفوفة.

الإجابة رقم 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():

  • الحجة الثالثة في دالة الاستدعاء تعرض المصفوفة التي تم استدعاء دالة map عليها
  • الحجة الثانية لـ Array.map() هي كائن سيكون هو قيمة this لدالة الاسترجاع. ضع في اعتبارك أنه يجب عليك استخدام الكلمة المفتاحية function العادية لإعلان دالة الاسترجاع لأن الدالة السهمية لا تمتلك ربطًا خاصًا بها لكلمة this.

على سبيل المثال:

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

const thisObj = { prop1: 1 }

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