Giả sử các mảng bạn đã tạo, vòng lặp trông như thế này:
var i, j, entry, ImgArray;
// Create the array
ImgArray = new Array(4);
for (i=0; i < 4 ; i++) {
ImgArray[i] = new Array(4);
}
// Loop through both dimensions
for (i = 0; i < ImgArray.length; ++i) {
entry = ImgArray[i];
for (j = 0; j < entry.length; ++j) {
// Do something with entry[j]
}
}
Điều này là do có không mảng hai chiều trong JavaScript. (Trong thực tế, ngay cả arrays aren't really arrays, nhưng chúng ta hãy không đi đến đó.) Có "mảng", và một mục nhập mảng có thể là một mảng khác, nhưng một mục nhập mảng có thể dài hơn hoặc ngắn hơn so với các mảng khác. Vì vậy, bạn lấy mảng và vòng lặp đó thông qua chiều dài của nó, có thể khác với độ dài khác trong cùng một "thứ nguyên".
Lưu ý rằng tôi đã không sử dụng for..in
ở trên. Đừng sử dụng for..in
để lặp qua các mảng trừ khi bạn thực sự biết mình đang làm gì; details here. (Nếu bạn làm thực sự biết mình đang làm gì và có biện pháp phòng ngừa đầy đủ, thì tốt, nhưng mã được trích dẫn của bạn không thực hiện các biện pháp phòng ngừa cần thiết.) for..in
không không lặp lại các chỉ mục của một mảng, nó liệt kê thuộc tính tên của một đối tượng.
Tắt chủ đề # 1: Trong JavaScript, quy ước (bạn tự do bỏ qua) chỉ sử dụng mũ ban đầu (ImgArray
) cho hàm hàm dựng.
Tắt chủ đề # 2: Bạn có thể xem bằng cách sử dụng mảng chữ ([entry, entry, entry]
) thay vì new Array(...)
, nhưng tùy thuộc vào việc bạn đang làm.
Tắt chủ đề # 3: Bạn nên dựa vào việc chèn dấu chấm phẩy (như với dòng ImgArray[i] = new Array(4)
). Hãy chắc chắn để đưa vào dấu chấm phẩy nơi họ đang cần thiết, hoặc bạn sẽ thấy rằng bạn không thể giảm thiểu kịch bản của bạn đúng cách và/hoặc rằng bạn sẽ chống lại các lỗi lẻ lãng phí thời gian của bạn.:-)
Nguồn
2010-12-11 23:39:37
Ngoài ra: ngừng sử dụng 'document.write()' - nó khá ác :-) – Pointy
document.write là OK, "tăng cường cho vòng" (cho ... trong mảng) là không. –
@Pointy: Không có gì sai với 'document.write', được sử dụng một cách thích hợp. –