5
Tôi có một cấu Json như dưới đâyNhóm Json Dựa trên Nhiều Phím
[
{
"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"
}
]
Tôi muốn nhóm Json để N' cấp trong javascript, nói bằng cách thông qua danh sách các phím. Ví dụ: cho category_id, item_id và variant_id, tôi hy vọng phản hồi sau đây:
[
{
"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"
}
]
}
]
}
]
Cần trợ giúp về cách thực hiện việc này?
Tôi đã thử một cái gì đó như sau, nhưng nó nhóm cho một cấp độ. Tôi muốn nó được đệ quy.
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;
}
tôi đã cố gắng một cái gì đó như sau, nhưng nó nhóm cho một cấp, i muốn nó được đệ quy [code] function groupBy (collection, property) { var i = 0, val, index, giá trị = [], result = []; cho (; i -1) kết quả [chỉ mục] .push (bộ sưu tập [i]); else { values.push (val); result.push ([bộ sưu tập [i]]); } } kết quả trả về; } –
Madhan
bạn muốn chuyển danh sách các tên khóa hoặc giá trị? – user937284
tên khóa (trong ví dụ trên, tôi cần chuyển category_id, item_id, variant_id làm danh sách – Madhan