我收到如下 javascript 响应。我举了一个例子。将会有很多不同的 table_id 具有不同的值。
var a = [{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '220.001',
name: 'Gross Profit',
code: 'LSGP'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Profit',
code: 'LSTR'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Volume',
code: 'OCVL'
}
]
let result = []
a.map(y => {
let index = result.findIndex(x => x.table_id === y.table_id)
if (index === -1) {
result.push({
table_id: y.table_id,
data: [y.name, y.code]
})
} else {
result[index].data.push(y.kpi_name)
}
})
console.log(result)
我正在尝试创建一个如下所示的 json 对象。但它没有按要求工作。需要一些帮助
[
{
"table_full_name":"Jin",
"total" :"820.001",
"data":[
{
"name":"Gross Profit",
"code":"LSGP"
},
{
"name":"Profit",
"code":"LSTR"
},
{
"name":"Volume",
"code":"OCVL"
}
]
}
]
使用
Array::reduce()
收集您的数据和一些对象解构以将您的项目分成多个部分:
var a = [{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '220.001',
name: 'Gross Profit',
code: 'LSGP'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Profit',
code: 'LSTR'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Volume',
code: 'OCVL'
}
]
const result = a.reduce((r, {table_id, table_full_name, total, ...data}) => {
const found = r.map.get(table_id);
if(found){
found.data.push(data);
return r;
}
r.map.set(table_id, r.arr[r.arr.length] = {table_full_name, total, data: [data]});
return r;
}, {arr: [], map: new Map}).arr;
console.log(result)
你可以使用
var a = [{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '220.001',
name: 'Gross Profit',
code: 'LSGP'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Profit',
code: 'LSTR'
},
{
table_id: 11111111,
table_full_name: 'Jin',
total: '820.001',
paytable: '300',
name: 'Volume',
code: 'OCVL'
}
];
const result = Object.values(a.reduce((all, y) => {
const group = all[y.table_id] || {
table_full_name: y.table_full_name,
total: y.total,
data: []
};
group.data.push({
name: y.name,
code: y.code
})
all[y.table_id] = group;
return all;
}, {}));
console.log(result)