Làm cách nào để tạo động đối tượng lồng nhau trong JavaScript?

Để cập nhật động các thuộc tính đối tượng lồng nhau trong JavaScript bằng cách xác định đường dẫn bằng một chuỗi, bạn có thể sử dụng hàm trợ giúp sau

const setProperty = [obj, path, value] => {
    const [head, ...rest] = path.split['.']

    return {
        ...obj,
        [head]: rest.length
            ? setProperty[obj[head], rest.join['.'], value]
            : value
    }
}

Đã sao chép vào khay nhớ tạm. Sao chép

Sau đó, chỉ cần chuyển đối tượng của bạn làm tham số đầu tiên cho hàm, đường dẫn của bạn dưới dạng chuỗi làm tham số thứ hai và giá trị bạn muốn gán cho thuộc tính làm tham số thứ ba. Ví dụ

const obj = {
    property: {
        updated: false
    }
}

const updatedObj = setProperty[obj, 'property.updated', true]

// The above will return:
{
    property: {
        updated: false
    }
}

Đã sao chép vào khay nhớ tạm. Sao chép

Chức năng này là thuần túy, có nghĩa là đối tượng ban đầu của bạn sẽ không bị thay đổi. Thay vào đó, hàm trả về với một đối tượng được sửa đổi hoàn toàn mới

Tìm cách để cải thiện kỹ năng của bạn?

Cách chức năng hoạt động

Hàm này sử dụng đệ quy để tìm và cập nhật thuộc tính chính xác. Trước tiên, chúng tôi chia đường dẫn đã đi qua bằng các dấu chấm, sau đó sử dụng hàm hủy để lấy giá trị đầu tiên từ mảng và tất cả phần còn lại sử dụng trải rộng

const [head, ...rest] = 'updating.nested.property'.split['.']

// The above will be:
head = 'updating'
rest = ['nested', 'property']

Đã sao chép vào khay nhớ tạm. Sao chép

Bước tiếp theo là trả về một đối tượng mới, nơi đầu tiên chúng ta chuyển vào đối tượng hiện có với spread và cũng cập nhật động thuộc tính cho biến head. Trong trường hợp trên, obj.updating sẽ được cập nhật

Câu hỏi là, giá trị của nó nên là gì? . Chúng ta có thể kiểm tra xem biến rest có còn bất kỳ độ dài nào không [không phải là một mảng trống] và nếu vậy, chúng ta có thể gọi lại hàm với các tham số mới

// Starting with:
const [head, ...rest] = 'updating.nested.property'.split['.']

// The above will be:
head = 'updating'
rest = ['nested', 'property']

setProperty[obj[head], rest.join['.'], value]
// The above translates to:
setProperty[obj.updating, 'nested.property', value]

// In the next iteration:
const [head, ...rest] = 'nested.property'.split['.']

// The above will be:
head = 'nested'
rest = ['property']

setProperty[obj.nested, 'property', value]

Đã sao chép vào khay nhớ tạm. Sao chép

Và cứ như vậy, cho đến khi chúng tôi đạt được thuộc tính cuối cùng, trong trường hợp đó, chúng tôi dừng đệ quy và chỉ cần đặt giá trị

Cũng đáng lưu ý rằng nếu thuộc tính gốc tồn tại, nhưng thuộc tính lồng nhau thì không, nó sẽ tạo đối tượng cho bạn và vẫn đặt đường dẫn. Tuy nhiên, điều này sẽ không hoạt động nếu thuộc tính gốc không tồn tại trên đối tượng

Làm cách nào để tự động tạo đối tượng lồng nhau trong JavaScript?

Chuỗi cung cấp tên của cài đặt sau đó được phân tách bằng dấu gạch dưới thành một mảng. Cài đặt mới sẽ được thêm vào đối tượng "Cài đặt" hiện có bằng cách tạo các đối tượng lồng nhau mới với tên được đặt bởi từng phần của mảng, ngoại trừ phần cuối cùng phải là một chuỗi cung cấp giá trị của cài đặt

Làm cách nào để lấy giá trị đối tượng lồng nhau động trong JavaScript?

Bạn có thể truy cập động các thuộc tính đối tượng lồng nhau trong JavaScript bằng cách sử dụng dấu ngoặc vuông . Bạn cần sử dụng nhiều dấu ngoặc vuông cho một đối tượng lồng nhau. Tôi có một đối tượng lồng nhau với thuộc tính tên cũng là một đối tượng. Thuộc tính tên chứa hai thuộc tính lồng nhau.

Làm cách nào để tạo đối tượng lồng nhau trong JavaScript?

Cách tạo các đối tượng lồng nhau trong JavaScript? .
Một đối tượng “dữ liệu” được tạo có chứa nhiều thuộc tính, bao gồm “id”, “email”, “contactInfo”, “name”, “address”, “city” và “country”
Có thể truy xuất các đối tượng lồng nhau như “contactInfo” và “address” thông qua toán tử dấu chấm

Làm cách nào để tạo đối tượng JSON lồng nhau trong JavaScript?

const obj = { mã. "AA", phụ. { mã số. "BB", phụ. { mã số. "CC", phụ. { mã số. "DD", phụ. { mã số. "EE", phụ. {} } } } } }; Lưu ý rằng đối với mỗi cặp duy nhất trong chuỗi, chúng ta có một đối tượng con mới và thuộc tính mã ở bất kỳ cấp nào đại diện cho một cặp cụ thể. Chúng ta có thể giải quyết vấn đề này bằng cách sử dụng phương pháp đệ quy.

Chủ Đề