ahe*_*iot 8 javascript ecmascript-6
我试图在一个对象中深入分配一个值.例如:
const errors = {}
if(errorOnSpecificField) {
// TypeError: Cannot read property 'subSubCategory' of undefined(…)
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
Run Code Online (Sandbox Code Playgroud)
现在,没有lodash,我可以这样做:
const errors = {}
if(errorOnSpecificField) {
errors.subCategory = errors.SubCategory || {}
errors.subCategory.subSubCategory = errors.SubCategory.subSubCategory || {}
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
Run Code Online (Sandbox Code Playgroud)
有了lodash,我可以这样做:
const errors = {}
if(errorOnSpecificField) {
_.set(errors, 'subCategory.subSubCategory.fieldWithError', 'Error Message');
}
Run Code Online (Sandbox Code Playgroud)
我试图避免使用第三方库.是否有更优雅的解决方案,特别是现在es2015有对象解构.逆操作很简单:
let {subCategory : {subSubCategory: {fieldWithError}}} = errors
Run Code Online (Sandbox Code Playgroud)
什么是深层对象分配的优雅解决方案?谢谢!
这是一种安全地分配给深层对象的相当可读的方法:
(((errors||{}).subCategory||{}).subSubCategory||{}).fieldWithError = 'Error Message'
Run Code Online (Sandbox Code Playgroud)
但是,如果它尚不存在,则不会创建。 errors.subCategory.subSubCategory
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |