Tìm kiếm trang web

javascript - Chỉ số bên trong hàm map()


Tôi đang thiếu một tùy chọn cách lấy số chỉ mục bên trong hàm map sử dụng List từ Immutable.js:

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

Tài liệu cho thấy map() trả về Iterable<number, M>. Có cách nào tinh tế để làm những gì tôi cần không?

Câu trả lời #1

Bạn sẽ có thể lấy index của vòng lặp hiện tại cho phương thức map thông qua tham số thứ hai của nó.

Ví dụ:

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

Đầu ra:

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

Xem thêm: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Tham số

callback - Hàm tạo ra một phần tử của Mảng mới, nhận ba đối số:

  1. currentValue
    Phần tử hiện tại đang được xử lý trong mảng.

2) chỉ mục
Chỉ mục của phần tử hiện tại đang được xử lý trong mảng.

  1. mảng
    Hàm map của mảng đã được gọi.

Câu trả lời #2

Chỉ mục Array.prototype.map():

Người ta có thể truy cập chỉ mục Array.prototype.map() thông qua đối số thứ hai của hàm callback. Đây là một ví dụ:

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

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

console.log(map);

Các đối số khác của Array.prototype.map():

  • Tham số thứ ba của hàm callback tiết lộ mảng mà hàm map được gọi trên đó
  • Đối số thứ hai của Array.map() là một đối tượng sẽ là giá trị this cho hàm callback. Hãy nhớ rằng bạn phải sử dụng từ khóa function thông thường để khai báo callback vì một arrow function không có ràng buộc riêng với từ khóa this.

Ví dụ:

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

const thisObj = { prop1: 1 }

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

Bài viết liên quan