我不知道问题是否正确,但我想做以下事情,我希望“变量”的属性成为变量日的一部分。
物件如下: {seg: 60, min:1, dias: 7, semana: 1}
保留以下方式的物件:考虑到物件内部的物件可以是任何人,并且它不必是属性“变量”,因为我想让它动态化,为什么像 delete dia.变量和后来合并不会为我服务。
使用我向您展示的代码,我只获得了结果: {seg: 60, min:1, variable:{dias: 7, semana: 1}, dias: 7, semana: 1}
关于如何更有效地做到这一点的任何想法,最重要的是,做到这一点。
const dia = {seg: 60, min:1, variable:{dias: 7, semana: 1}}
let varia = {}
let newDia = {}
const processJson = () => {
Object.entries(dia).map(([name, value]) => {
if(typeof(value) === 'object'){
varia = value
newDia = {...dia, ...variable}
}
})
}
processJson()
uj5u.com热心网友回复:
这是一种将任何具有 2 层深度的物件展平的通用方法。它使用阵列reduce
方法和Object.keys()
函式:
const dia = { seg: 60, min: 1, variable: {dias: 7, semana: 1} }
function flatObject(o) {
return Object.keys(o).reduce((result, key) => {
// If there is a nested object, flat the object
if (typeof o[key] === 'object' && ! Array.isArray(o[key]) && o[key] !== null) {
for (const inKey in o[key]) {
result[inKey] = o[key][inKey];
}
}
// Just copy the value
else {
result[key] = o[key];
}
// Return accumulator
return result;
}, {});
}
console.log(flatObject(dia))
uj5u.com热心网友回复:
首先使用解构赋值从物件中提取seg
,min
和variable
属性。dia
const { seg, min, variable } = dia;
然后创建一个新物件,在其中设定seg
和min
具有解构属性的属性。对于variable
属性,使用扩展语法将 的属性variable
放置在同一物件内。
const result = {
seg,
min,
...variable
};
显示代码片段
const dia = {
seg: 60,
min: 1,
variable: {
dias: 7,
semana: 1
}
};
const { seg, min, variable } = dia;
const result = {
seg,
min,
...variable
};
console.log(result);
0 评论