[英]Create array with parents and childs with deep nested object/array javascript
我想在 mysql 表中存儲以下與 (DAD,SON) 表的關系,如下所示:
| DAD || SON |
| mike. || june |
| mike || michael|
| june || elias |
| june || pepe |
等等...
我有一個未知深度的嵌套 object 看起來像這樣:
const originalObject = {
Dad: 'mike',
sons: [
{
dad: 'june',
sons: [
{
dad: 'elias',
},
{
dad: 'pepe',
},
],
},
{
dad: 'michael',
sons: [
{
dad: 'elias',
},
{
dad: 'janister',
},
{
dad: 'pepe',
sons: [
{
dad: 'lester',
},
],
},
],
},
],
};
我怎樣才能制作一個看起來像這樣的數組:
const desiredArray = [
['mike', 'june'],
['mike', 'michael'],
['june', 'elias'],
['june', 'elias'],
etc,]
我已經將 object 轉換為數組,但我不確定它是否有幫助......現在的數組就像:
const parsedObjectToArray =[ 'mike',[ [ 'june', [elias, pepe] ], [ 'michael', [elias, janister, pepe] ] ] ];
那么,基於 originalObject 或 parsedObjectToArray,我如何將其中一個轉換為所需的Array? 我已經搜索過,但我很努力! 謝謝!
您可以使用遞歸 function 向下潛入 object 並添加到整個dads
數組。
const dads = [];
function addToDads(obj) {
obj.sons.forEach(son => {
dads.push([obj.dad, son.dad]);
if (son.sons) {
addToDads(son);
}
})
}
addToDads(originalObject);
console.log(dads);
請參閱下面的實際操作:
const originalObject = { dad: 'mike', sons: [ { dad: 'june', sons: [ { dad: 'elias', }, { dad: 'pepe', }, ], }, { dad: 'michael', sons: [ { dad: 'elias', }, { dad: 'janister', }, { dad: 'pepe', sons: [ { dad: 'lester', }, ], }, ], }, ], }; const dads = []; function addToDads(obj) { obj.sons.forEach(son => { dads.push([obj.dad, son.dad]); if (son.sons) { addToDads(son); } }) } addToDads(originalObject); console.log(dads);
您可以使用Array#flatMap
進行遞歸。
const getRelatives= ({ dad, sons = [] }) => sons.flatMap(son => [ [dad, son.dad], ...getRelatives(son) ]), object = { dad: 'mike', sons: [{ dad: 'june', sons: [{ dad: 'elias' }, { dad: 'pepe' }] }, { dad: 'michael', sons: [{ dad: 'elias' }, { dad: 'janister' }, { dad: 'pepe', sons: [{ dad: 'lester' }] }] }] }, result = getRelatives(object); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.