我想要深度赋值一个对象的值。例如:
const errors = {}
if(errorOnSpecificField) {
// TypeError: Cannot read property 'subSubCategory' of undefined(…)
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
现在,没有使用lodash,我可以做到:
const errors = {}
if(errorOnSpecificField) {
errors.subCategory = errors.SubCategory || {}
errors.subCategory.subSubCategory = errors.SubCategory.subSubCategory || {}
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
使用lodash,我可以做到这一点:
const errors = {}
if(errorOnSpecificField) {
_.set(errors, 'subCategory.subSubCategory.fieldWithError', 'Error Message');
}
我希望避免使用第三方库。现在es2015已经有对象解构,是否有更优雅的解决方案?反向操作很容易:
let {subCategory : {subSubCategory: {fieldWithError}}} = errors
什么是深层对象赋值的优雅解决方案?谢谢!
extend
实现中的一些。 - le_merrors.subCategory = {subSubCategory: {fieldWithError: 'Error Message'}}
呢?这正好是解构的反向操作。 - Bergi