mi hanno una struttura JSON come qui di seguitoRaggruppamento JSON In base a chiavi multiple
[
{
"category_id": "C1",
"category_name": "C1_Name",
"item_id": "C1_I1",
"item_name": "C1_I1_Name",
"variant_id": "C1_I1_V1",
"variant_name": "C1_I1_V1_ Name"
},
{
"category_id": "C1",
"category_name": "C1_Name",
"item_id": "C1_I1",
"item_name": "C1_I1_Name",
"variant_id": "C1_I1_V2",
"variant_name": "C1_I1_V2_ Name"
},
{
"category_id": "C1",
"category_name": "C1_Name",
"item_id": "C1_I2",
"item_name": "C1_I2_Name",
"variant_id": "C1_I2_V1",
"variant_name": "C1_I2_V1_ Name"
},
{
"category_id": "C1",
"category_name": "C1_Name",
"item_id": "C1_I2",
"item_name": "C1_I2_Name",
"variant_id": "C1_I2_V2",
"variant_name": "C1_I2_V2_ Name"
},
{
"category_id": "C2",
"category_name": "C2_Name",
"item_id": "C2_I1",
"item_name": "C2_I1_Name",
"variant_id": "C2_I1_V1",
"variant_name": "C2_I1_V1_ Name"
}
]
Vorrei gruppo livello JSON per N' in javascript, dire che passando l'elenco dei tasti. Per esempio dando category_id, item_id e variant_id, mi aspetto la seguente risposta:
[
{
"category_id": "C1",
"category_name": "C1_Name",
"item": [
{
"item_id": "C1_I1",
"item_name": "C1_I1_Name",
"variant": [
{
"variant_id": "C1_I1_V1",
"variant_name": "C1_I1_V1_ Name"
},
{
"variant_id": "C1_I1_V2",
"variant_name": "C1_I1_V2_ Name"
}
]
},
{
"item_id": "C1_I2",
"item_name": "C1_I2_Name",
"variant": [
{
"variant_id": "C1_I2_V1",
"variant_name": "C1_I2_V1_ Name"
},
{
"variant_id": "C1_I2_V2",
"variant_name": "C1_I2_V2_ Name"
}
]
}
]
}
]
avrebbe bisogno di un aiuto su come andare su questo?
Ho provato qualcosa di simile al seguente, ma si raggruppa per un livello. Mi piacerebbe che fosse ricorsivo.
function groupBy(collection, property) {
var i = 0, val, index, values = [], result = [];
for (; i < collection.length; i++) {
val = collection[i][property];
index = values.indexOf(val);
if (index > -1)
result[index].push(collection[i]);
else {
values.push(val); result.push([collection[i]]);
}
}
return result;
}
ho provato qualcosa di simile a quanto segue, ma gruppi per un livello, i vorrebbe che fosse ricorsivo [codice] functionBy (raccolta, proprietà) { var i = 0, val, index, values = [], result = []; per (; i -1) risultato [indice] .push (raccolta [i]); else { values.push (val); result.push ([collezione [i]]); } } risultato di ritorno; } –
Madhan
si desidera passare un elenco di nomi chiave o valori? – user937284
nomi di chiavi (nell'esempio precedente, ho bisogno di passare category_id, item_id, variant_id come elenco – Madhan