Trong JavaScript, việc lấy các khóa và giá trị bao gồm một đối tượng rất dễ dàng. Bạn có thể truy xuất các khóa, giá trị của từng đối tượng hoặc kết hợp cả hai thành một mảng
Các ví dụ dưới đây sử dụng đối tượng sau
const obj = { name: 'Daniel', age: 40, occupation: 'Engineer', level: 4 };Lấy chìa khóa của một đối tượng
đối tượng. keys() phương thức trả về một mảng các chuỗi chứa tất cả các khóa của đối tượng, được sắp xếp theo thứ tự xuất hiện
console.log(Object.keys(obj)); // Expected output: ["name", "age", "occupation", "level"]Ở đây, cũng như trong các ví dụ sau, chúng ta chuyển vào đối tượng mà dữ liệu cần thiết làm tham số
Lấy giá trị của đối tượng
đối tượng. Phương thức values() trả về một mảng các chuỗi chứa tất cả các giá trị trường của đối tượng, được sắp xếp theo thứ tự xuất hiện
console.log(Object.values(obj)); // Expected output: ["Daniel", 40, "Engineer", 4]Nhận các mục nhập của một đối tượng
đối tượng. phương thức entry() trả về một mảng các mảng. Mỗi mảng bao gồm một cặp giá trị. Chuỗi đầu tiên là tên của một khóa trong đối tượng, chuỗi thứ hai là giá trị tương ứng của nó. Trong ví dụ bên dưới, phần tử đầu tiên trong mảng là [“name”, “Daniel”]. Trong mảng con này, “tên” là khóa đầu tiên của đối tượng obj và “Daniel” là giá trị đầu tiên của đối tượng
console.log(Object.entries(obj)); // Expected output: [["name", "Daniel"], ["age", 40], ["occupation", "Engineer"], ["level", 4]]Mẹo. Có thể tạo lại đối tượng ban đầu bằng cách sử dụng giá trị trả về của Đối tượng. phương thức entry()
Cải cách một đối tượng
Đưa ra một mảng các cặp khóa-giá trị được trả về bởi Object. các mục (), chúng ta có thể sử dụng cùng một đầu ra để tạo lại đối tượng ban đầu. Điều này đạt được với Object. fromEntries()
const objEntries = Object.entries(obj); console.log(Object.fromEntries(objEntries)); // Expected output: {name: "Daniel", age: 40, occupation: "Engineer", level: 4}đối tượng. Phương thức fromEntries() tạo thành một đối tượng từ một đối số có thể lặp lại. Bạn không thể đơn giản chuyển một mảng có hai phần tử, vì đây không phải là định dạng được trả về bởi Đối tượng. mục(). Đầu vào đối tượng. fromEntries() cần phải là một mảng của các mảng, như được cung cấp trong ví dụ trên. Tuy nhiên, điều quan trọng cần lưu ý là các mảng không tuân theo “quy tắc hai mục” sẽ vẫn được xử lý. Bạn có thể thấy điều này trong ví dụ sau
const arr = [[4, 28, 167, "JavaScript"], ["One", "Two", "Three"], ["hello"]]; console.log(Object.fromEntries(arr)); // Expected output: {4: 28, One: "Two", hello: undefined}Trong ví dụ trên, phần tử mảng đầu tiên có bốn mục, phần tử mảng thứ hai có ba mục và phần tử mảng thứ ba chỉ có một mục. Trong mỗi trường hợp này, chỉ có hai mục đầu tiên được sử dụng khi tạo đối tượng. Nếu chỉ có một phần tử duy nhất, giá trị tương ứng của phần tử đó là không xác định
Toán tử delete được thiết kế để sử dụng trên các thuộc tính của đối tượng. Nó không ảnh hưởng đến các biến hoặc chức năng
Không nên sử dụng toán tử delete trên các thuộc tính đối tượng JavaScript được xác định trước. Nó có thể làm hỏng ứng dụng của bạn
Đối tượng lồng nhau
Các giá trị trong một đối tượng có thể là một đối tượng khác
Thí dụ
myObj = {
Tên. "John",
tuổi. 30,
ô tô. {
xe1. "Ford",
xe2. "XE BMW",
xe3. "Xin vâng"
}
}
Bạn có thể truy cập các đối tượng lồng nhau bằng ký hiệu dấu chấm hoặc ký hiệu dấu ngoặc
hoặc là
hoặc là
hoặc là
Mảng và đối tượng lồng nhau
Giá trị trong đối tượng có thể là mảng và giá trị trong mảng có thể là đối tượng
Thí dụ
const myObj = {
Tên. "John",
tuổi. 30,
ô tô. [
{Tên. "Ford", người mẫu. ["Fiesta", "Focus", "Mustang"]},
{Tên. "BMW", người mẫu. ["320", "X3", "X5"]},
{Tên. "Fiat", người mẫu. ["500", "Gấu trúc"]}
]
}
Để truy cập các mảng bên trong mảng, hãy sử dụng vòng lặp for-in cho mỗi mảng
Thí dụ
cho (hãy để tôi trong myObj. ô tô) {
x += "
cho (đặt j trong myObj. ô tô [tôi]. người mẫu) {
x += myObj. ô tô [tôi]. mô hình [j];
}
}Tự mình thử »
Thuộc tính tài sản
Tất cả tài sản đều có tên. Ngoài ra chúng còn có giá trị
Giá trị là một trong những thuộc tính của thuộc tính
các thuộc tính khác là. có thể đếm được, có thể định cấu hình và có thể ghi
Các thuộc tính này xác định cách truy cập thuộc tính (có thể đọc được không?, có thể ghi không?)
Trong JavaScript, tất cả các thuộc tính có thể được đọc, nhưng chỉ có thể thay đổi thuộc tính giá trị (và chỉ khi thuộc tính có thể ghi được)
(ECMAScript 5 có các phương thức để nhận và đặt tất cả các thuộc tính thuộc tính)
Thuộc tính nguyên mẫu
Các đối tượng JavaScript kế thừa các thuộc tính của nguyên mẫu của chúng
Từ khóa delete không xóa các thuộc tính kế thừa, nhưng nếu bạn xóa một thuộc tính nguyên mẫu, nó sẽ ảnh hưởng đến tất cả các đối tượng được kế thừa từ nguyên mẫu