我有一組具有重復父鍵的物件:
[
{parent1: {'child_id_1': 'value_child_1'}}
{parent1: {'child_id_1_1': 'value_child_1_1'}}
{parent2: {'child_id_2_1': 'value_child_2_1'}}
{parent2: {'child_id_2_2': 'value_child_2_2'}}
{parent2: {'child_id_2_3': 'value_child_2_3'}}
...
]
我正在尋找這個結果:
[
{parent1: {'child_id_1': 'value_child_1'}, {'child_id_1_1': 'value_child_1_1'}}
{parent2: {'child_id_2_1': 'value_child_2_1'}, {'child_id_2_2': 'value_child_2_2'}, {'child_id_2_3': 'value_child_2_3'}}
]
我試過類似下面的東西,但它只回傳一個密鑰對。
const unique = Array.from(new Set(filteredViews.map(a => a.id)))
.map(id => {
return filteredViews.find(a => a.view_name === id)
})
任何幫助將不勝感激
uj5u.com熱心網友回復:
假設您的資料如下所示:
const data = [
{parent1: {'child_id_1': 'value_child_1'}},
{parent1: {'child_id_1_1': 'value_child_1_1'}},
{parent2: {'child_id_2_1': 'value_child_2_1'}},
{parent2: {'child_id_2_2': 'value_child_2_2'}},
{parent2: {'child_id_2_3': 'value_child_2_3'}},
]
使用香草方法,您可以執行以下操作:
let unique = {};
data.forEach(d => {
let key = Object.keys(d)[0]; // assuming your object has a single key
if (!unique[key]) { unique[key] = []; }
unique[key].push(d[key]);
});
導致:
{
"parent1": [
{"child_id_1":"value_child_1"},
{"child_id_1_1":"value_child_1_1"}
],
"parent2": [
{"child_id_2_1":"value_child_2_1"},
{"child_id_2_2":"value_child_2_2"},
{"child_id_2_3":"value_child_2_3"}
]
}
uj5u.com熱心網友回復:
使用Array.prototype.reduce:
const srcArr = [
{parent1: {'child_id_1': 'value_child_1'}},
{parent1: {'child_id_1_1': 'value_child_1_1'}},
{parent2: {'child_id_2_1': 'value_child_2_1'}},
{parent2: {'child_id_2_2': 'value_child_2_2'}},
{parent2: {'child_id_2_3': 'value_child_2_3'}},
];
const targetArr = srcArr.reduce((acc, val) => {
let [key] = Object.keys(val);
let obj = acc.find(el => key in el);
if (!obj) acc.push({[key]: [val[key]]});
else obj[key].push(val[key]);
return acc;
}, []);
console.log(targetArr);
/* result:
[
{
"parent1": [
{
"child_id_1": "value_child_1"
},
{
"child_id_1_1": "value_child_1_1"
}
]
},
{
"parent2": [
{
"child_id_2_1": "value_child_2_1"
},
{
"child_id_2_2": "value_child_2_2"
},
{
"child_id_2_3": "value_child_2_3"
}
]
}
]
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339344.html
標籤:javascript
