Tính không có thứ tự của đối tượng trong JavaScript
Như bạn đã biết, trong mảng, các phần tử được sắp xếp theo một thứ tự nghiêm ngặt, vì vị trí của mỗi phần tử xác định khóa của nó. Trong các đối tượng, chúng ta tự đặt khóa, vì vậy thứ tự của các phần tử không quan trọng. Nghĩa là mảng là danh sách có thứ tự, còn đối tượng thì không.
Để làm ví dụ, hãy xem xét đối tượng sau:
let obj = {1: 'a', 2: 'b', 3: 'c'};
console.log(obj[1]); // sẽ in ra 'a'
console.log(obj[2]); // sẽ in ra 'b'
console.log(obj[3]); // sẽ in ra 'c'
Nếu chúng ta hoán đổi các phần tử của đối tượng này theo một thứ tự tùy ý (tất nhiên, cùng với các khóa của chúng), thì sẽ không có gì thay đổi trong hoạt động của script của chúng ta:
let obj = {3: 'c', 1: 'a', 2: 'b'};
console.log(obj[1]); // sẽ in ra 'a'
console.log(obj[2]); // sẽ in ra 'b'
console.log(obj[3]); // sẽ in ra 'c'
Ngoài ra, các khóa số không nhất thiết phải có tất cả các giá trị liên tục không có khoảng trống, giống như mảng. Chúng ta có thể có các số tùy ý và điều này sẽ không gây ra bất kỳ vấn đề nào (tương tự như tính thưa thớt trong mảng). Vì vậy, đối tượng sau là chính xác:
let obj = {7: 'a', 50: 'b', 23: 'c'};
Tạo một đối tượng và đảm bảo rằng thứ tự các khóa trong đó không quan trọng.