setInterval (Bài trước)
(Bài tiếp) Mathematica

Mảng JavaScript

Mảng Array là một đối tượng định nghĩa sẵn trong JS, nó là đối tượng chứa danh sách các dữ liệu. Có hai cách tạo ra đối tượng mảng, sử dụng toán tử new và khởi tạo bằng ký hiệu []

Cách 1, tạo mảng với new Array(), ví dụ:

var courses = new Array("HTML", "CSS", "JS");

Cách 2, tạo mảng với khai báo dữ liệu trong []

var courses = ["HTML", "CSS", "JS"];

Mỗi phần từ có một chỉ số trong mảng, phần tử thứ nhất chỉ số là 0. Để truy cập tới phần tử mảng dùng ký hiệu tên-mảng[chỉ-số-phần-tử]

var cacmonhoc = new Array("HTML", "CSS", "JS");
var monhoc = courses[0]; // HTML
cacmonhoc[1] = "C++"; //đổi phần tử thứ 2 thành C++

Khi cố gắng truy cập phần tử mảng, mà phần tử đó không tồn tại thì nó trả về giá trị bằng undefined

var courses = new Array("HTML", "CSS", "JS");
document.write(courses[10]);
//Xuất ra "undefined" vì phần tử thứ 10 không có

Tạo mảng bằng cách chỉ định số lượng phần tử

Ở cách tạo thứ 2 này, các phần tử không được gán giá trị ngay, mảng sẽ tạo ra số lượng phần tử yêu cầu sau đó giá trị từng phần tử được gán sau.

var courses = new Array(3);
courses[0] = "HTML";
courses[1] = "CSS";
courses[2] = "JS";

Một số thuộc tính và phương thức

Một số thuộc tính và phương thức định nghĩa sẵn cho các đối tượng mảng

Số lượng phần tử trong mảng

Thuộc tính length cho biết số lượng phần tử trong mảng

var courses = ["HTML", "CSS", "JS"];
document.write(courses.length);
//Outputs 3

Kết hợp 2 mảng

Để kết hợp 2 mảng thành một mảng, dùng phương thức concat

var c1 = ["HTML", "CSS"];
var c2 = ["JS", "C++"];
var courses = c1.concat(c2);

Ví dụ trên có được mảng courses bằng cách nối c2 vào c1. Vậy courses có bốn phần tử: HTML, CSS, JS, C++. Nhớ là concat không tác động gì trên mảng gốc, mà nó chỉ sử dụng các mảng gốc để tạo ra mảng kết hợp mới. Vậy mảng c1, c2 vẫn không có sự thay đổi nào

Duyệt qua các phần tử mảng bằng forEach

courses.forEach(function(item, index, array) {
  console.log(item, index);
});

//HTML 0
//CSS 1
//JS 2

Thêm một phần tử vào cuối bằng push

courses.push("GO");

Thêm một phần tử vào đầu bằng unshift

courses.unshift("C++");

Xóa phần tử cuối của mảng bằng pop

courses.pop();

Xóa phần tử đầu của mảng bằng shift

courses.shift();

Xóa các phần tử theo chỉ số splice

//Xóa 2 phần từ bắt đầu phần tử ở vị trí index
courses.splice(index, 2);

Nhân bản một mảng với slice

var courses2 = courses.slice();

Mảng kết hợp

Nhiều ngôn ngữ lập trình có hỗ trợ đánh chỉ số không chỉ là bằng số mà có thể bằng text, đây là các mảng kết hợp. Rất tiếc là JavaScript không hỗ trợ loại mảng này.

Tuy nhiên, bạn nhớ lại về đối tượng, truy cập thuộc tính đối tượng hoạt động khá giống với mảng kết hợp.

var person = []; //mảng rỗng
person["name"] = "John";
person["age"] =   46;

document.write(person["age"]);
//Outputs "46"

Bạn thấy person hoạt động giống như một đối tượng. Các chỉ số name, age không phải là chỉ số mảng mà là thuộc tính của đối tượng person. Do đó nếu bạn lấy số phần tử mảng person.length sẽ trả về 0

Cách đơn giản để duyệt qua các phần tử mảng

var index;
var a = ["a", "b", "c"];
for (index = 0; index < a.length; ++index) {
    console.log(a[index]);
}

Đăng ký nhận bài viết mới
setInterval (Bài trước)
(Bài tiếp) Mathematica