Array, Object và Regex

Tiếp theo biểu diễn kiểu số nguyên, biểu diễn kiểu số thực và biểu diễn chuỗi, bài này sẽ giới thiệu biểu diễn kiểu mảng, kiểu Object và kiểu Regex.

Biểu diễn mảng

Mảng (array) là danh sách các phần tử sắp xếp liên tiếp với nhau với thời gian truy cập một phần tử là hằng số.

Mảng được viết trong dấu ngoặc vuông [] được phân tách bởi dấu phẩy , Khi khởi tạo biến thì cũng khởi tạo giá trị length là độ lớn của mảng.

Ví dụ khởi tạo giá trị của coffees có 3 phần tử:

1
let coffees = ['Cà phê đường', 'Cà phê đen đá', 'Bạc xỉu'];

Trường hợp sử dụng hai dấu phẩy liên tiếp thì mảng sẽ tự động thêm giá trị undefined.

1
2
3
4
5
let fish = ['Lion', , 'Angel'];
console.log(fish[0] === 'Lion'); // true
console.log(fish[1] === undefined); // true
console.log(fish[2] === 'Angel'); // true
console.log(fish.length); // 3

Tuy nhiên khi sử dụng dấu phẩy ở cuối mảng thì nó sẽ bỏ qua dấu phẩy ở cuối.

1
2
3
4
let fish = ['Lion', 'Angel', ];
console.log(fish[0] === 'Lion'); // true
console.log(fish[1] === 'Angel'); // true
console.log(fish.length); // 2

Tuy nhiên để code rõ ràng hơn thì các phần tử undefined ở trong mảng chúng ta nên viết một cách tường minh.

Biểu diễn Object

Giá trị của Object là một danh sách gồm không hoặc nhiều cặp tên thuộc tính và các giá trị, được đặt trong dấu ngoặc nhọn({}) phân tách nhau bởi dấu ,

Lưu ý code-block cũng đặt trong dấu ngoặc nhọn ({}) tương tự như Object.

1
2
3
4
5
6
7
8
var sales = 'Toyota';
var car = {
  myCar: 'Saturn',
  getCar: function(name) {
    return name;
  },
  special: sales
};

Ngoài ra, chúng ta sử dụng một chữ số hoặc chuỗi ký tự cho tên của một thuộc tính và cũng có thể lồng một Object bên trong một Object khác.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var car = {
  manyCars: {
    a: 'Saab',
    b: 'Jeep'
  },
  7: 'Mazda'
};

console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda

Tên thuộc tính Object có thể là bất kỳ chuỗi nào, bao gồm cả chuỗi rỗng. Nếu tên thuộc tính không phải là tên biến hoặc số hợp lệ, thì tên đó phải được đặt trong dấu ngoặc đơn hoặc ngoặc kép.

Tên thuộc tính không phải là tên biến hợp lệ không thể được truy cập dưới dạng thuộc tính dấu chấm (.). Nhưng có thể được truy cập và đặt bằng ký hiệu giống như mảng ([]).

1
2
3
4
5
6
var unusual = {
  '': 'An empty string',
  '!': 'Bang!'
}
console.log(unusual['']);  // An empty string
console.log(unusual['!']); // Bang!

Khi sử dụng tên thuộc tính là giá trị của một biến khác chúng ta sử dụng [] bao trong tên biến.

1
2
3
4
5
var prop = 'car';
var myCar = {
  [prop]: 'BMW'
};
console.log(myCar); // { car: 'BMW' }

Chúng ta cũng có thể khai báo thuộc tính Object kiểu ngắn gọn { handler } thay vì { handler: handler }. Hoặc có thể khai báo kiểu hàm ngắn gọn.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var handler = 'handler';
var obj = {
  // Kiểu viết ngắn gọn của ‘handler: handler’
  handler,
  // Tương đương với toString: function {...}
  toString() {
    return 'Obj';
  },
}
console.log(obj);

Biểu diễn Regex

Regex là được bao quanh giữa hai dấu gạch chéo //.

1
2
3
4
// \d là Digit (số 0-9)
// g là Global search.
// i là Case-insensitive search (không phân biệt hoa thường)
var re = /\d/gi;