Trong các hướng dẫn trước đây, chúng tôi đã xem xét các điều cơ bản về mảng JavaScript, các mảng điều khiển và các mảng sắp xếp. Cho đến nay, tất cả các mảng mà chúng tôi đã xử lý đã được các mảng phẳng của người Viking; Mỗi phần tử mảng chứa một giá trị duy nhất, chẳng hạn như một số, chuỗi hoặc đối tượng. Tuy nhiên, giống như hầu hết các ngôn ngữ lập trình, JavaScript cho phép bạn tạo các mảng bên trong các mảng, được gọi là mảng lồng nhau. Trong một mảng lồng nhau, các yếu tố của một mảng là các mảng. Ví dụ: Ở đây, chúng tôi đã tạo ra một mảng gồm 2 yếu tố. Mỗi phần tử lần lượt một mảng chứa 3 phần tử. Để truy cập các phần tử của các mảng bên trong, bạn chỉ cần sử dụng hai bộ dấu ngoặc vuông. Ví dụ:
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
6 truy cập phần tử thứ 3 của mảng bên trong phần tử thứ 2 của mảng
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
7. Bạn có thể làm tổ sâu như bạn muốn. Ví dụ, ở đây, chúng tôi đã tạo ra một mảng cấp cao nhất có tên là
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
8, trong đó chúng tôi đã đặt mảng
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
7 ở trên, cũng như một mảng ____20 tương tự-tổng cộng 3 cấp độ làm tổ: tổng cộng: Tất nhiên, một khi bạn bắt đầu làm tổ, bạn sẽ nhanh chóng kết thúc với rất nhiều phần tử mảng. Cách dễ nhất để làm việc với các mảng lớn là sử dụng các vòng. Và để xử lý các mảng lồng nhau, bạn cần sử dụng các vòng lặp lồng nhau. Ví dụ: các vòng lặp mã sau qua mảng lồng nhau
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
8 mà chúng tôi đã tạo ở trên, hiển thị từng động vật, cùng với độ tuổi và loại của chúng: Bây giờ bạn đã biết cách tạo và sử dụng các mảng lồng trong JavaScript. Bạn sẽ thấy các mảng lồng nhau rất hữu ích khi bạn muốn lưu trữ dữ liệu có cấu trúc cao - chẳng hạn như ví dụ
var pets = new Array ( );
pets[0] = new Array ( "Sheba", 13, "cat" );
pets[1] = new Array ( "Jasper", 12, "dog" );
var dinosaurs = new Array ( );
dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" );
dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" );
var animals = new Array ( pets, dinosaurs );
alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog"
8 của chúng tôi ở trên - và khi bạn tạo ra các cấu trúc dữ liệu đa chiều (thường được sử dụng trong các ứng dụng trò chơi và đồ họa). Vui thích!Lặp qua các mảng lồng nhau
Tương tác độc giả
Để bao gồm một khối mã trong nhận xét của bạn, hãy bao quanh nó với các thẻ for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 3. Bạn có thể bao gồm các đoạn mã nhỏ hơn bên trong một số văn bản thông thường bằng cách xung quanh chúng với các thẻ for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 4.
Thẻ được phép trong nhận xét: for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 5.
Đây là ví dụ về những gì tôi đang làm:
var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color);Tôi đang thực hiện một hình thức chọn vòng lặp hoạt động tốt, nhưng tôi muốn lấy tên con mảng, trong trường hợp này - kích thước hoặc màu sắc. Khi tôi đang cảnh giác (Tùy chọn [0]), tôi nhận được toàn bộ các yếu tố của mảng. Nhưng đối với một số trường hợp cụ thể, tôi chỉ muốn lấy tên mảng, có kích thước/màu sắc như tôi đã nói. Có cách nào để đạt được điều đó không?
Peterh
11.1K16 Huy hiệu vàng82 Huy hiệu bạc102 Huy hiệu đồng16 gold badges82 silver badges102 bronze badges
Đã hỏi ngày 26 tháng 3 năm 2012 lúc 11:57Mar 26, 2012 at 11:57
2
Tôi sẽ tạo một đối tượng như thế này:
var options = { size: ["S", "M", "L", "XL", "XXL"], color: ["Red", "Blue", "Green", "White", "Black"] }; alert(Object.keys(options));Để truy cập các phím cá nhân:
for (var key in options) { alert(key); }P.S .: Khi bạn tạo một đối tượng mảng mới, không sử dụng for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 6 sử dụng for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 7 thay thế.
Đã trả lời ngày 26 tháng 3 năm 2012 lúc 12:04Mar 26, 2012 at 12:04
Antonjsantonjsantonjs
13.7K11 Huy hiệu vàng62 Huy hiệu bạc91 Huy hiệu Đồng11 gold badges62 silver badges91 bronze badges
3
Bạn có thể nhận được bằng cách sử dụng giá trị for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 8 một cái gì đó như thế này:
var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array(size, color); var len = options.length; for(var i = 0; i<len; i++) { for(var key in options[i]) { alert(options[i][key]) } }Xem tại đây: //jsfiddle.net/8hmrk/8/
Đã trả lời ngày 26 tháng 3 năm 2012 lúc 12:25Mar 26, 2012 at 12:25
1
Không có cách nào để biết rằng hai thành viên của mảng for ( i=0; i<animals.length; i++ ) { for ( j=0; j<animals[i].length; j++ ) { alert ( animals[i][j][0] + " is a " + animals[i][j][1] + " year old " + animals[i][j][2] ); } } 9 đến từ các biến có tên var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 0 và var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 1.
Chúng cũng không nhất thiết được gọi là độc quyền, bất kỳ biến nào cũng có thể chỉ vào mảng đó.
var notSize = size; console.log(options[0]); // It is `size` or `notSize`?Một điều bạn có thể làm là sử dụng một đối tượng ở đó thay thế ...
var options = { size: size, color: color }Sau đó, bạn có thể truy cập var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 2 hoặc var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 3.
Đã trả lời ngày 26 tháng 3 năm 2012 lúc 11:58Mar 26, 2012 at 11:58
Alexalexalex
468K197 Huy hiệu vàng868 Huy hiệu bạc976 Huy hiệu Đồng197 gold badges868 silver badges976 bronze badges
Bạn không thể. Mảng không có tên.
Bạn chỉ có hai tham chiếu đến mảng, một trong biến và một trong mảng thứ ba.
Không có cách nào để tìm tất cả các tài liệu tham khảo tồn tại cho một đối tượng nhất định.
Nếu tên là quan trọng, thì hãy lưu trữ nó với dữ liệu.
var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' }; var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' }; var options = [size, color];Rõ ràng là bạn sẽ phải sửa đổi mã hiện có truy cập dữ liệu (vì bây giờ bạn có var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 4 thay vì var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 5 nhưng bạn cũng có var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 6).
Đã trả lời ngày 26 tháng 3 năm 2012 lúc 11:59Mar 26, 2012 at 11:59
QuentinentinQuentin
881K121 Huy hiệu vàng1179 Huy hiệu bạc1291 Huy hiệu Đồng121 gold badges1179 silver badges1291 bronze badges
2
Vâng, đúng vậy. Bạn có thể dùng
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 0Để có được kích thước "S"
hoặc
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 1Để có được màu "đỏ"
Đã trả lời ngày 26 tháng 3 năm 2012 lúc 12:00Mar 26, 2012 at 12:00
TOBITOBITobi
1.4401 Huy hiệu vàng13 Huy hiệu bạc26 Huy hiệu đồng1 gold badge13 silver badges26 bronze badges
Trong trường hợp đó, bạn không muốn chèn var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 0 và var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 1 bên trong một mảng, nhưng vào một đối tượng
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 2Sau đó bạn có thể truy cập các bộ khóa bằng cách
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 3Đã trả lời ngày 26 tháng 3 năm 2012 lúc 12:00Mar 26, 2012 at 12:00
TOBITOBISirko
1.4401 Huy hiệu vàng13 Huy hiệu bạc26 Huy hiệu đồng19 gold badges143 silver badges176 bronze badges
Trong trường hợp đó, bạn không muốn chèn var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 0 và var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 1 bên trong một mảng, nhưng vào một đối tượng
Sau đó bạn có thể truy cập các bộ khóa bằng cách
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 4SirkosirkoMar 26, 2012 at 12:01
70.9K19 Huy hiệu vàng143 Huy hiệu bạc176 Huy hiệu đồngdanp
Bạn đã tạo một mảng mảng (đa chiều), vì vậy các tùy chọn [0] trong trường hợp này là mảng kích thước. Bạn cần tham khảo phần tử đầu tiên của đứa trẻ, mà đối với bạn là: Tùy chọn [0] [0].6 gold badges40 silver badges48 bronze badges
Nếu bạn muốn lặp qua tất cả các mục, bạn có thể sử dụng cú pháp var size = new Array("S", "M", "L", "XL", "XXL"); var color = new Array("Red", "Blue", "Green", "White", "Black"); var options = new Array( size, color); 9 được mô tả ở đây.
var pets = new Array ( ); pets[0] = new Array ( "Sheba", 13, "cat" ); pets[1] = new Array ( "Jasper", 12, "dog" ); var dinosaurs = new Array ( ); dinosaurs[0] = new Array ( "Cyril", 45, "Tyrannosaur" ); dinosaurs[1] = new Array ( "Gertrude", 72, "Brontosaur" ); var animals = new Array ( pets, dinosaurs ); alert ( animals[0][1][0] + " is a " + animals[0][1][1] + " year old " + animals[0][1][2] ); // Displays "Jasper is a 12 year old dog" 5Đã trả lời ngày 26 tháng 3 năm 2012 lúc 12:01Sep 14, 2016 at 9:17