Я столкнулся с этой проблемой, я смог написать решение, которое может обрабатывать массив объектов (не размещен здесь) или вложенный объект одного уровня, но я не мог решить, когда данный объект имеет вложенную структуру, как показано ниже.Мне любопытно узнать, как мы можем решить эту проблему.
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 } } }
.