我試圖從包含許多陣列的陣列中創建一個物件。陣列元素是物件的相互嵌套的鍵,只有在最初沒有創建鍵的情況下。也就是說,它不應該覆寫鍵并且還應該維護鍵索引。
例子是這樣的——
const MainArray = [
{
key: ['name', 'dog', 'feature', 'hairy'],
value1:1 ,
value2:2
},
{
key: ['name', 'dog', 'eye', 'brown'],
value1:1 ,
value2:2
},
{
key: ['kind', 'human', 'class', 'man', 'height', 'tall'],
value1:'Mike' ,
value2:'John'
},
{
key: ['kind', 'human', 'class', 'woman', 'hobby'],
value1:'Cyling' ,
value2:'Tennis'
},
]
const requiredObject =
{
name:{
dog :{
feature:{
hairy :{value1:1, value2:2}
},
eye:{
brown:{value1:1, value2:2}
}
}
},
kind:{
human:{
class:{
man:{
height:{
tall:{value1:'Mike', value2:'John'}
}
},
woman:{
hobby:{value1:'Cyling', value2: 'Tennis'}
}
}
}
}
}
我怎樣才能從MainArray到requireObject
uj5u.com熱心網友回復:
您可以使用array.reduce()key通過使用 another 遍歷陣列來構建新物件array.reduce()。嘗試:
const MainArray = [
{
key: ['name', 'dog', 'feature', 'hairy'],
value1:1 ,
value2:2
},
{
key: ['name', 'dog', 'eye', 'brown'],
value1:1 ,
value2:2
},
{
key: ['kind', 'human', 'class', 'man', 'height', 'tall'],
value1:'Mike' ,
value2:'John'
},
{
key: ['kind', 'human', 'class', 'woman', 'hobby'],
value1:'Cyling' ,
value2:'Tennis'
}
];
const result = MainArray.reduce((acc, cur) => {
let { key, ...data } = cur;
let lastIndex = key.length - 1;
key.reduce((obj, k, index) => {
obj[k] = obj[k] || (index === lastIndex ? {...data} : {});
return obj[k];
}, acc);
return acc;
}, {});
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478932.html
標籤:javascript 数组 打字稿 目的
