Sto provando ad assegnare in modo profondo un valore in un oggetto. Per esempio:Assegnare in modo approfondito l'oggetto JavaScript letterale
const errors = {}
if(errorOnSpecificField) {
// TypeError: Cannot read property 'subSubCategory' of undefined(…)
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
In questo momento, senza lodash, non posso fare:
const errors = {}
if(errorOnSpecificField) {
errors.subCategory = errors.SubCategory || {}
errors.subCategory.subSubCategory = errors.SubCategory.subSubCategory || {}
errors.subCategory.subSubCategory.fieldWithError = 'Error Message'
}
Con lodash, posso fare questo:
const errors = {}
if(errorOnSpecificField) {
_.set(errors, 'subCategory.subSubCategory.fieldWithError', 'Error Message');
}
sto cercando di evitare l'uso di un terzo biblioteca di partito. Esiste una soluzione più elegante, specialmente ora che es2015 ha una destrutturazione degli oggetti. L'operazione inversa è semplice:
let {subCategory : {subSubCategory: {fieldWithError}}} = errors
Qual è una soluzione elegante per l'assegnazione di oggetti profondi? Grazie!
Object.assign()? - sostituisce tutte le proprietà anche se –
Come si cita, poiché sovrascrive le altre proprietà già impostate, questo non funzionerà per il mio caso – aherriot
si potrebbe quindi cercare alcune delle numerose implementazioni 'estese ' –