【发布时间】:2019-07-20 16:05:41
【问题描述】:
我遇到了这个问题,我能够编写可以处理对象数组(未在此处发布)或一级深度嵌套对象的解决方案,但是当给定对象具有如下嵌套结构时我无法解决。我很想知道我们如何解决这个问题。
const source = {
a: 1,
b: {
c: true,
d: {
e: 'foo'
}
},
f: false,
g: ['red', 'green', 'blue'],
h: [{
i: 2,
j: 3
}]
};
解决方案应该是
const solution = {
'a': 1,
'b.c': true,
'b.d.e': 'foo',
'f': false,
'g.0': 'red',
'g.1': 'green',
'g.2': 'blue',
'h.0.i': 2,
'h.0.j': 3
};
尝试一个深层嵌套对象
let returnObj = {}
let nestetdObject = (source, parentKey) => {
let keys = keyFunction(source);
keys.forEach((key) => {
let values = source[key];
if( typeof values === 'object' && values !== null ) {
parentKey = keys[0]+'.'+keyFunction(values)[0]
nestetdObject(values, parentKey);
}else{
let key = parentKey.length > 0 ? parentKey : keys[0];
returnObj[key] = values;
}
})
return returnObj
};
// Key Extractor
let keyFunction = (obj) =>{
return Object.keys(obj);
}
调用函数
nestetdObject(source, '')
但是如果对象像{ foo: { boo : { doo : 1 } } },我的尝试将失败。
【问题讨论】:
标签: javascript arrays typescript data-structures javascript-objects