Cấu trúc dữ liệu — phần 1: Array

SeanDang
3 min readJan 3, 2019

--

Bài viết đã chỉnh sửa và bổ sung tại blog cá nhân https://viiiprock.com/blog/javascript-array-co-gi-khac-voi-cac-dang-object-khac-6159273308203937b342b092

Giới thiệu

Một cách ngắn gọn, Array (mảng) là một dạng cấu trúc dữ liệu được sử dụng rất nhiều trong các ngôn ngữ lập trình khác nhau.

Array một chiều (One dimension Array)

Array một chiều là một dạng array tuyến tính, nó còn được gọi là vector. Trong JavaScript, ta có thể khai báo Array bằng nhiều cách.

Ví dụ

const array = ['foo', 'bar']

Phần tử
Mỗi thành phần được lưu trong array được gọi là phần tử

Chỉ mục (Indexes)
Trong JS, chỉ mục được sắp đặt từ số 0 như nhiều ngôn ngữ khác.

Array đa chiều (Muti-dimensional Array)

Array đa chiều là array chứa trong nó array con. Bản thân JavaScript không cung cấp array đa chiều, cách đơn giản để khai báo một array là sử dụng ký pháp thuần túy (literal notation).

ví dụ

const activities = [
['Work', 9],
['Eat', 2],
['Commute', 2],
['Play Game', 2],
['Sleep', 7]
]

Jagged Array

Jagged array là array đa chiều với các array con không đồng nhất về kích cỡ.

example

const array = [
["Matthew", "27", "Developer"],
["Simon", "24"],
["Luke"]
]

Thay đổi kích cỡ Array

Thay đổi kích cở array tức là bổ sung, gộp, hoặc loại bỏ phần tử bên trong array.

Ví dụ đơn giản về thay đổi kích cỡ array

let array = [1, 2, 3, 4, 5];
console.log(array.length); // 5
array.length--;
console.log(array.length); // 4
array.length += 15;
console.log(array.length); // 19

Một số phương thức phổ biến

  • push() thêm phần tử vào cuối array.
  • unshift() thêm phần tử vào đầu array.
  • pop() xóa phần tử ở cuối.
  • shift() xóa phần tử ở đầu.
  • splice() xóa các phần tử liên tiếp nhau sau vị trí chỉ mục.
  • slice() trích tách các phần tử.

Tìm hiểu thêm về Array

Một số mẹo thay đổi kích thước array có hiệu suất cao.

Filter

let schema = ["hi","ihaveboyfriend",null, null, "goodbye"]
schema = schema.filter(n => n);
// ["hi","ihaveboyfriend", "goodbye"]

Xóa phần tử với array length

let array = [1, 2, 3, 4, 5, 6];  
console.log(array.length); // 6
array.length = 3;
console.log(array.length); // 3
console.log(array); // [1,2,3]

Làm rỗng array

let array = [1, 2, 3, 4, 5, 6]; 
array.length = 0;
console.log(array.length); // 0
console.log(array); // []

Gộp array

Với các arrays nhỏ

let array1 = [1, 2, 3];  
let array2 = [4, 5, 6];
console.log(array1.concat(array2)); // [1,2,3,4,5,6];

Với các arrays lớn

Hàm Array.concat() đối với các array lớn sẽ tiêu thụ rất nhiều bộ nhớ khi tạo từng các array mới. Nên ta có thể dùng cách sau để tăng hiệu suất với các array lớn.

Array.push.apply(arr1, arr2)

let array1 = [1, 2, 3];  
let array2 = [4, 5, 6];
console.log(array1.push.apply(array1, array2)); // [1,2,3,4,5,6];

Cách này đồng thời cũng tối ưu hiệu suất cho Javascript code không phân biệt kích cỡ nào.

Dùng splice để xóa phần tử của array

Một trong những mẹo ngon nhất để tối ưu javascript.

let myArray = ["a", "b", "c", "d"] 
myArray.splice(0, 2) ["a", "b"]
// myArray ["c", "d"]

--

--