Tìm chỉ mục của phần tử trong mảng đa chiều javascript

Một người bạn đặt ra một tình thế khó xử. Cách rõ ràng nhất để tìm kiếm một mảng hai chiều trong JavaScript cho một phần tử và trả về chỉ mục của mảng chứa nó là gì?

Nghĩa là, trả về

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
7 nếu được yêu cầu tìm kiếm sau đây cho
haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
8

const haystack = [
 [1,2,3],
 [4,5,6],
 [7,8,9]
];
const search = 8;

nỗ lực đầu tiên của tôi

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2

Sau đó, sau khi biết về

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
9

haystack.findIndex(arr => arr.includes(search));
<- 2

Nếu bạn cần cả cột và hàng trong mảng 2 chiều thì sao?

const row = haystack.findIndex(row => row.includes(search));
const col = haystack[row].indexOf(search);

Có thể thân hàm bên trong

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
9 có thể sử dụng
haystack.findIndex(arr => arr.includes(search));
<- 2
1 thay thế và bị lừa lưu trữ giá trị của nó trong khi vẫn trả về
haystack.findIndex(arr => arr.includes(search));
<- 2
2 hoặc
haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
0 để tránh làm gián đoạn
haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
9 bên ngoài, mặc dù tại thời điểm đó, nó vẫn là lập trình hàm và nó có đáng để sử dụng các vòng lặp truyền thống không?

ví dụ 1

Tìm phần tử đầu tiên có giá trị trên 18

const tuổi = [3, 10, 18, 20];

lứa tuổi. findIndex(checkAge);

function checkAge(age) {
  trả về tuổi > 18;
}

Tự mình thử »


Định nghĩa và cách sử dụng

Phương thức

haystack.findIndex(arr => arr.includes(search));
<- 2
4 thực thi một hàm cho từng phần tử mảng

The

haystack.findIndex(arr => arr.includes(search));
<- 2
4 method returns the index (position) of the first element that passes a test

Phương thức

haystack.findIndex(arr => arr.includes(search));
<- 2
4 trả về -1 nếu không tìm thấy kết quả khớp

Phương thức

haystack.findIndex(arr => arr.includes(search));
<- 2
4 không thực thi hàm đối với các phần tử mảng trống

Phương thức

haystack.findIndex(arr => arr.includes(search));
<- 2
4 không thay đổi mảng ban đầu


cú pháp

mảng. findIndex(function(currentValue, index, arr), thisValue)

Thông số

Hàm mô tả tham số() Bắt buộc.
Một hàm được chạy cho từng phần tử mảng. giá trị hiện tạibắt buộc.
Giá trị của phần tử hiện tại. chỉ mụcTùy chọn.
The index of the current element. mảngTùy chọn.
Mảng của phần tử hiện tại. giá trị nàyTùy chọn. Mặc định
haystack.findIndex(arr => arr.includes(search));
<- 2
9.
Một giá trị được truyền cho hàm dưới dạng giá trị
const row = haystack.findIndex(row => row.includes(search));
const col = haystack[row].indexOf(search);
0 của nó.

Giá trị trả về

TypeDescriptionA numberChỉ số của phần tử đầu tiên vượt qua bài kiểm tra.
Nếu không thì -1.

Thêm ví dụ

Tìm phần tử đầu tiên có giá trị cao hơn giá trị đầu vào

Bài kiểm tra

Bất kỳ giá trị nào ở trên

Tự mình thử »

Hỗ trợ trình duyệt

haystack.findIndex(arr => arr.includes(search));
<- 2
4 là một tính năng của ECMAScript6 (ES6)

ES6 (JavaScript 2015) được hỗ trợ trong tất cả các trình duyệt hiện đại

ChromeEdgeFirefoxSafariOperaCóCóCóCóCó

haystack.findIndex(arr => arr.includes(search));
<- 2
4 không được hỗ trợ trong Internet Explorer 11 (hoặc cũ hơn)

Bạn có thể sử dụng phương thức push() của Array hoặc ký hiệu lập chỉ mục để thêm các phần tử vào mảng nhiều chiều

Thêm phần tử vào mảng bên ngoài

let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData.push(['Peter', 24]);

console.log(studentsData); //[["Jack", 24], ["Sara", 23], ["Peter", 24]

Thêm phần tử vào mảng bên trong

// using index notation
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1][2] = 'hello';

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]
// using push()
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData[1].push('hello');

console.log(studentsData); // [["Jack", 24], ["Sara", 23, "hello"]]

Bạn cũng có thể sử dụng phương thức splice() của Array để thêm một phần tử vào một chỉ mục đã chỉ định. Ví dụ,

________số 8

Xóa phần tử khỏi mảng nhiều chiều

Bạn có thể sử dụng phương thức pop() của Array để xóa phần tử khỏi mảng nhiều chiều. Ví dụ,

Xóa phần tử khỏi mảng ngoài

// remove the array element from outer array
let studentsData = [['Jack', 24], ['Sara', 23],];
studentsData.pop();

console.log(studentsData); // [["Jack", 24]]

Xóa phần tử khỏi mảng bên trong

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
0

Bạn cũng có thể sử dụng phương thức

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
15 để xóa một phần tử tại một chỉ mục đã chỉ định. Ví dụ,

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
10

Lặp lại Mảng đa chiều

Bạn có thể lặp qua một mảng nhiều chiều bằng cách sử dụng phương thức forEach() của Array để lặp qua mảng nhiều chiều. Ví dụ,

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
11

đầu ra

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
12

Phương thức

haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
16 đầu tiên được sử dụng để lặp qua các phần tử mảng bên ngoài và phương thức thứ hai
haystack.indexOf(haystack.find(arr => arr.includes(search)));
<- 2
16 được sử dụng để lặp qua các phần tử mảng bên trong

indexOf có hoạt động trên mảng 2D không?

indexOf có hoạt động trên mảng 2D không? . You cannot use indexOf to do complicated arrays (unless you serialize it making everything each coordinate into strings), you will need to use a for loop (or while) to search for that coordinate in that array assuming you know the format of the array (in this case it is 2d).

JavaScript có mảng đa chiều không?

Mảng đa chiều không được cung cấp trực tiếp trong JavaScript . Nếu chúng ta muốn sử dụng bất cứ thứ gì hoạt động như một mảng nhiều chiều thì chúng ta cần tạo một mảng nhiều chiều bằng cách sử dụng một mảng một chiều khác. Vì vậy, mảng nhiều chiều trong JavaScript được gọi là mảng bên trong mảng khác.

Mảng 2D trong JavaScript là gì?

Mảng hai chiều là tập hợp các phần tử có chung tên và được tổ chức dưới dạng ma trận ở dạng hàng và cột. The two-dimensional array is an array of arrays, so we create an array of one-dimensional array objects.

Mảng 2D trong cấu trúc dữ liệu là gì?

Mảng hai chiều là cấu trúc dữ liệu chứa tập hợp các ô được trình bày trong lưới hai chiều , tương tự như một .