实例详情
const obj = {
a: 1,
b: [1, 2, { c: true }],
c: { e: 2, f: 3 },
g: null,
};
let objRes = {
a: 1,
"b.0": 1,
"b.1": 2,
"b.2.c": true,
"c.e": 2,
"c.f": 3,
g: null,
};
扁平化概念的核心意义是:去除冗余、厚重和繁杂的装饰效果。而具体表现在去掉了多余的透视、纹理、渐变以及能做出3D效果的元素,这样可以让“信息”本身重新作为核心被凸显出来。同时在设计元素上,则强调了抽象、极简和符号化。对象实现扁平化,从需要转化的结果可以看出,我们需要对整个对象进行遍历,对象里面嵌套对象或者数组都需要扁平化,将嵌套的内层对象的属性值依次输出。我认为本题的核心就在于传入对象的 key 和 value,对value进行递归遍历,找到所有嵌套的属性值。
function flattenObj(obj) {
let res = {};
for (var let key in obj) {
let res = {};
for (let key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
flatten(res, obj[key], `${key}`);
} else {
res[key] = obj[key];
}
}
}
function flatten(res, obj, keyname) {
for (let key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
flatten(res, obj[key], `${keyname}.${key}`);
} else {
res[`${keyname}.${key}`] = obj[key]
}
}
}
}