Mảng của JavaScript
- Trang trước Thuộc tính số JS
- Trang tiếp theo Phương pháp mảng JS
Mảng JavaScript được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất.
Mảng là gì?
Mảng là một biến đặc biệt, có thể lưu trữ nhiều hơn một giá trị trong một lần.
Nếu bạn có danh sách dự án (ví dụ, danh sách thương hiệu xe cộ), lưu trữ thương hiệu xe trong một biến duy nhất nên như sau:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
Nhưng, nếu bạn muốn lặp qua tất cả các xe và tìm một giá trị cụ thể? Giả sử không phải là ba thương hiệu xe mà là ba trăm thương hiệu xe?
Giải pháp là mảng!
Mảng có thể lưu trữ nhiều giá trị trong một tên duy nhất, và có thể truy cập các giá trị đó thông qua số chỉ mục.
Tạo mảng
Sử dụng văn bản mảng là phương pháp đơn giản nhất để tạo mảng trong JavaScript.
Ngữ pháp:
var array-name = [item1, item2, ...];
Mô hình
var cars = ["Saab", "Volvo", "BMW"];
Khoảng trống và dòng mới không quan trọng. Định nghĩa có thể trải qua nhiều dòng:
Mô hình
var cars = [ "Saab", "Volvo", "BMW" ];
Hãy không viết dấu phẩy逗 sau phần tử cuối cùng (ví dụ "BMW",).
Có thể có vấn đề tương thích giữa các trình duyệt.
sử dụng từ khóa JavaScript mới
Ví dụ dưới đây cũng sẽ tạo ra một mảng và gán giá trị cho nó:
Mô hình
var cars = new Array("Saab", "Volvo", "BMW");
Cả hai ví dụ trên có hiệu quả hoàn toàn giống nhau. Không cần sử dụng new Array()
.
Do sự đơn giản, khả năng đọc và tốc độ thực thi, hãy sử dụng phương pháp đầu tiên (phương pháp văn bản mảng).
truy cập phần tử mảng
Chúng ta thông qua việc tham chiếuSố chỉ mục (biểu thức chỉ mục)để tham chiếu một phần tử mảng.
Câu lệnh này truy cập giá trị của phần tử đầu tiên trong cars:
var name = cars[0];
Câu lệnh này thay đổi phần tử đầu tiên trong cars:
cars[0] = "Opel";
Mô hình
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] là phần tử đầu tiên trong mảng. [1] là phần tử thứ hai. Mảng bắt đầu từ số 0.
Thay đổi phần tử mảng
Câu lệnh này thay đổi giá trị của phần tử đầu tiên trong cars:
cars[0] = "Opel";
Mô hình
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
truy cập toàn bộ mảng
Bằng cách sử dụng JavaScript, bạn có thể truy cập toàn bộ mảng bằng cách tham chiếu đến tên mảng:
Mô hình
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
mảng là đối tượng
mảng là loại đối tượng đặc biệt. Trong JavaScript, sử dụng typeof
ký tự toán sẽ trả về "object".
nhưng, mảng trong JavaScript tốt nhất nên được mô tả bằng mảng.
sử dụng mảngsốđể truy cập các 'phần tử'. Trong ví dụ này,person[0]
trả về Bill:
mảng:
var person = ["Bill", "Gates", 62];
đối tượng sử dụngtênđể truy cập các 'thành viên'. Trong ví dụ này,person.firstName
trả về Bill:
Đối tượng:
var person = {firstName:"Bill", lastName:"Gates", age:19};
phần tử của mảng có thể là đối tượng
Biến trong JavaScript có thể là đối tượng. Mảng là loại đối tượng đặc biệt.
Do đó, bạn có thể lưu các biến loại khác nhau trong cùng một mảng.
Bạn có thể lưu đối tượng trong mảng. Bạn có thể lưu hàm trong mảng. Bạn thậm chí có thể lưu mảng trong mảng:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
Thuộc tính và phương thức của mảng
Thực lực thực sự của mảng trong JavaScript ẩn trong các thuộc tính và phương thức của mảng:
Mô hình
var x = cars.length; // thuộc tính length trả về số lượng phần tử var y = cars.sort(); // phương thức sort() sắp xếp mảng
Chúng ta sẽ học về các phương thức của mảng trong chương tiếp theo.
thuộc tính length
length
thuộc tính trả về độ dài của mảng (số lượng phần tử của mảng).
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // độ dài của fruits là 4
length
thuộc tính luôn lớn hơn chỉ số tối đa của mảng (biểu thức).
truy cập phần tử đầu tiên của mảng
Mô hình
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
truy cập phần tử cuối cùng của mảng
Mô hình
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
duyệt qua các phần tử của mảng
Cách an toàn nhất để duyệt mảng là sử dụng "for
"Vòng lặp:
Mô hình
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
Bạn cũng có thể sử dụng Array.foreach()
Hàm:
Mô hình
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
Thêm phần tử mảng
Cách tốt nhất để thêm phần tử vào mảng là sử dụng push()
Phương thức:
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // Thêm một phần tử mới (Lemon) vào fruits
Cũng có thể sử dụng length
Thuộc tính thêm phần tử mới vào mảng:
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // Thêm một phần tử mới (Lemon) vào fruits
Cảnh báo!
Thêm phần tử có chỉ số cao nhất có thể tạo ra "hố không định nghĩa" trong mảng:
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // Thêm một phần tử mới (Lemon) vào fruits
Mảng liên quan
Nhiều yếu tố lập trình hỗ trợ mảng chỉ mục đặt tên.
Mảng có chỉ mục đặt tên được gọi là mảng liên quan (hoặc hash).
JavaScript không hỗ trợmảng chỉ mục đặt tên.
Trong JavaScript, mảng chỉ có thể sử dụngchỉ số số.
Mô hình
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length trả về 3 var y = person[0]; // person[0] trả về "Bill"
Cảnh báo!
Nếu bạn sử dụng chỉ mục đặt tên, JavaScript sẽ định nghĩa lại mảng thành đối tượng tiêu chuẩn.
Sau đó, tất cả các phương pháp và thuộc tính của mảng sẽ tạo ra kết quả không chính xác.
Mô hình:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length sẽ trả về 0 var y = person[0]; // person[0] sẽ trả về undefined
Khác biệt giữa mảng và đối tượng
Trong JavaScript,MảngSử dụngchỉ số số.
Trong JavaScript,đối tượngSử dụngChỉ số đặt tên.
Mảng là loại đối tượng đặc biệt, có chỉ số số
Khi nào sử dụng mảng, khi nào sử dụng đối tượng?
- JavaScript không hỗ trợ mảng liên kết
- Nếu muốn tên phần tử làchuỗi (text)thì nên sử dụngđối tượng.
- Nếu muốn tên phần tử làsốthì nên sử dụngMảng.
Tránh sử dụng new Array()
Không cần thiết phải sử dụng bộ tạo mảng built-in của JavaScript new Array()
.
Vui lòng sử dụng []
Thay vào đó!
Dưới đây là hai câu lệnh khác nhau tạo ra một mảng mới trống có tên là points:
var points = new Array(); // Xấu var points = []; // Tốt
Dưới đây là hai câu lệnh khác nhau tạo ra một mảng mới chứa sáu số:
var points = new Array(40, 100, 1, 5, 25, 10); // Xấu var points = [40, 100, 1, 5, 25, 10]; // Tốt
new
Từ khóa chỉ làm cho mã phức tạp hơn. Nó cũng sẽ tạo ra một số kết quả không mong đợi:
var points = new Array(40, 100); // Tạo ra mảng chứa hai phần tử (40 và 100)
Giả sử xóa một phần tử trong đó sẽ như thế nào?
var points = new Array(40); // Tạo ra mảng chứa 40 phần tử chưa định nghĩa !!
Làm thế nào để nhận biết mảng
Một vấn đề phổ biến là: Tôi làm thế nào để biết một biến có phải là mảng không?
Vấn đề ở toán tử JavaScript là typeof
Trả về "object
" :
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // Trả về object
Toán tử typeof trả về "object", vì mảng JavaScript thuộc về đối tượng.
Giải pháp 1:
Để giải quyết vấn đề này, ECMAScript 5 đã định nghĩa phương pháp mới Array.isArray()
:
Array.isArray(fruits); // Trả về true
Vấn đề của phương án này là ECMAScript 5 Không hỗ trợ trình duyệt cũ.
Giải pháp 2:
Tạo riêng của bạn isArray()
Hàm này được sử dụng để giải quyết vấn đề:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
Nếu tham số là mảng, thì hàm trên luôn trả về true.
Hoặc một cách giải thích chính xác hơn là: Nếu đối tượng nguyên mẫu chứa từ "Array" thì trả về true.
Giải pháp 3:
Nếu đối tượng được tạo bởi hàm xây dựng cho trước, thì instanceof Điều kiện trả về true:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // Trả về true
- Trang trước Thuộc tính số JS
- Trang tiếp theo Phương pháp mảng JS