#javascript #object
Вопрос:
У меня есть, скажем так, этот объект
const obj = {
background: {
backgroundColor:{
background: '#ffffff'
},
backgroundImage:{
background: 'url(...)'
}
},
header:{
logo:{
width: '100%'
},
title:{
color: '#000000'
}
}
}
И мне нужно разобрать его на что-то вроде этого:
const deconstructedObj = {
backgroundColor:{
background: '#ffffff'
},
backgroundImage:{
background: 'url(...)'
},
logo:{
width: '100%'
},
title:{
color: '#000000'
}
}
Это всего лишь пример, мои объекты больше, но идея та же, первые ключи нужно разобрать, как мне это сделать?
Комментарии:
1. Может быть, как на это посмотреть, нужно удалить первые ключи
Ответ №1:
Это приведет вас туда, так как вам нужны только значения внешних объектов. Object.values соберет эти внутренние объекты в повторяющийся массив, а array.reduce() поможет объединить их все в один результат объекта
Object.values(obj).reduce( (b,a) => ({...b, ...a}),{})
const obj = {
background: {
backgroundColor: {
background: '#ffffff'
},
backgroundImage: {
background: 'url(...)'
}
},
header: {
logo: {
width: '100%'
},
title: {
color: '#000000'
}
}
}
const decon = Object.values(obj).reduce( (b,a) => ({...b, ...a}),{})
console.log(decon)
Ответ №2:
Если вам нужны только определенные ключи или необходимые ключи вложены на разных уровнях, вы можете попробовать что-то вроде этого:
const obj = {
background: {
backgroundColor:{
background: '#ffffff'
},
backgroundImage:{
background: 'url(...)'
}
},
header:{
logo:{
width: '100%'
},
title:{
color: '#000000'
}
}
}
const { background: { backgroundColor, backgroundImage }, header: { logo, title } } = obj;
const destructuredObj = {
backgroundColor,
backgroundImage,
logo,
title
}
console.log(destructuredObj)