jquery - 如何在角度 8 的对象数组中进行分组
问题描述
如何对一组对象进行分组?在以下情况下可以使用reduce吗?
例如:如果同样需要将数据单独附加到一个字段中,我需要对 id 和 name 进行分组。
[{
data: ["Sriram Krishnan", 1440]
id: "CHARSUR"
name: "CHARSUR"
},
{
data: ["shaleesh ", 2955]
id: "Timesheet"
name: "Timesheet"
},
{
data:["Balachander ", 3720]
id: "CHARSUR"
name: "CHARSUR"
},
{
data: ["Sriram Krishnan", 720]
id: "Aroscop"
name: "Aroscop"
},
{
data: ["Karthik ", 540]
id: "Timesheet"
name: "Timesheet"
},
{
data: ["Shaju Murugan", 420]
id: "CHARSUR"
name: "CHARSUR"
}]
预期结果:我需要将分组结果(数据)附加到数组数组中。
[{
data: [["Sriram Krishnan", 1440],["Balachander ", 3720],["Shaju Murugan", 420]]
id: "CHARSUR"
name: "CHARSUR"
},
{
data: [["shaleesh ", 2955],["Karthik ", 540]]
id: "Timesheet"
name: "Timesheet"
},
{
data: ["Sriram Krishnan", 720]
id: "Aroscop"
name: "Aroscop"
}]
我正在以一种在 highcharts 饼图中使用的方式形成数据。
解决方案
在您的源数据中,请确保对象字段用逗号分隔:
src = [
{
data: ['Sriram Krishnan', 1440],
id: 'CHARSUR',
name: 'CHARSUR',
},
{
data: ['shaleesh ', 2955],
id: 'Timesheet',
name: 'Timesheet',
},
{
data: ['Balachander ', 3720],
id: 'CHARSUR',
name: 'CHARSUR',
},
{
data: ['Sriram Krishnan', 720],
id: 'Aroscop',
name: 'Aroscop',
},
{
data: ['Karthik ', 540],
id: 'Timesheet',
name: 'Timesheet',
},
{
data: ['Shaju Murugan', 420],
id: 'CHARSUR',
name: 'CHARSUR',
}];
此 JavaScript 代码将产生预期的分组结果:
let dst = [];
function getRecordInDst(srcRecord) {
for (let dstRecord of dst) {
if (dstRecord.id === srcRecord.id) return dstRecord;
}
let newRecord = {id: srcRecord.id, name: srcRecord.name, data: []};
dst.push(newRecord);
return newRecord;
}
for (let record of src) {
getRecordInDst(record).data.push(record.data);
}
推荐阅读
- reactjs - React Lazy 不适用于生产构建
- scala - Http4s 客户端/资源的集成测试
- java - 在不使用 excel 的情况下在 java 中评估 excel/其他语言表达式评估的库
- security - 在 bitbucket 管道变量中存储秘密是否安全?
- python - RegEx 将地址拆分为三个不同的系列 [第 2 部分]
- python - JS执行后如何获取网页的HTML代码?
- android - 在没有 RecyclerView 的情况下使用 PagedList
- cakephp - 有谁知道如何报告 authorizeModel 的正确使用?
- c++ - 禁用“脚本错误”弹出IWebBrowser2 c++ WinApi
- git - 将两个分支的差异移到第三个分支