Tôi đang cố gắng chỉ định sâu giá trị trong một đối tượng. Ví dụ:Phân bổ sâu đối tượng JavaScript theo nghĩa đen
const errors = {}
if(errorOnSpecificField) {
// TypeError: Cannot read property 'subSubCategory' of undefined(…)
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
Ngay bây giờ, mà không lodash, tôi có thể làm:
const errors = {}
if(errorOnSpecificField) {
errors.subCategory = errors.SubCategory || {}
errors.subCategory.subSubCategory = errors.SubCategory.subSubCategory || {}
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
Với lodash, tôi có thể làm điều này:
const errors = {}
if(errorOnSpecificField) {
_.set(errors, 'subCategory.subSubCategory.fieldWithError', 'Error Message');
}
Tôi cố gắng để tránh sử dụng một phần ba thư viện đảng. Có một giải pháp thanh lịch hơn, đặc biệt là bây giờ mà es2015 đã phá hủy đối tượng. Thao tác nghịch đảo rất dễ dàng:
let {subCategory : {subSubCategory: {fieldWithError}}} = errors
Giải pháp thanh lịch cho phân bổ đối tượng sâu là gì? Cảm ơn!
Object.assign()? - nó ghi đè lên tất cả các thuộc tính mặc dù –
Như bạn đề cập, vì nó ghi đè các thuộc tính khác đã được thiết lập, điều này sẽ không hoạt động cho trường hợp của tôi – aherriot
bạn có thể tìm kiếm một số triển khai 'mở rộng' –