首页 > 其他分享 >JS 数组 group by 分组

JS 数组 group by 分组

时间:2023-04-27 18:03:05浏览次数:32  
标签:el group name sex score 分组 key values JS

扩展数组方法

Array.prototype.groupBy = function groupBy(key) {     const hash = {},         result = [];     for (const el of this) {         if (hash[el[key]]) {             hash[el[key]].push(el);         } else {             result.push({                 key: el[key],                 values: (hash[el[key]] = [el]),             });         }     }     return result; };
Array.prototype.key = function (key) {     return this.map(el => el[key]); };
Array.prototype.sum = function (key) {     return this.reduce((total, el) => total + (key ? el[key] : el), 0); };
Array.prototype.distinct = function () {     return [...new Set(this)]; };

示例

let arr = [
    { name: 'Tom', sex: 'male', score: 95 },
    { name: 'Alice', sex: 'female', score: 85 },
    { name: 'Bill', sex: 'male', score: 58 },
    { name: 'Jack', sex: 'male', score: 63 },
    { name: 'Mary', sex: 'female', score: 77 },
];

# 按性别分组计算总分
arr.groupBy('sex').map(({key,values})=>({'sex':key,'sum':values.sum('score')}))

# 按性别分组计算人数
arr.groupBy('sex').map(({key,values})=>({'sex':key,'sum':values.length}))

 

 

标签:el,group,name,sex,score,分组,key,values,JS
From: https://www.cnblogs.com/whjblog/p/17359817.html

相关文章

  • 聚合,分组,F,Q查询
    目录小知识点*号打散redirect重定向小知识点*号打散列表字典或则元组前面加*号相当于作用是将列表解开成两个独立的参数,传入函数,还有类似的有两个星号,是将字典解开成独立的元素作为形参。a=[1,2,3]b=(1,2,3)c={1:“a”,2:“b”,3:“c”}print(a,"",*a)print(b,"",*b)prin......
  • js实现录屏功能
    原文连接:https://blog.csdn.net/weiguang102/article/details/123083770?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168258601016800213082578%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168258601016800213082578&bi......
  • js javascript 鼠标触碰select下拉列表渐变出div层,鼠标离开渐变缩回
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-......
  • java js JavaScript 设置html:radio的默认选中, js也可以用el表达式
    <html:radioproperty="consumptionClass"value="花了">花了</html:radio><html:radioproperty="consumptionClass"value="赚了">赚了</html:radio><html:radioproperty="consumptionClass"va......
  • mysql字段类型json更新
    updatetbl_testsettest_json=JSON_REPLACE(test_json,'$."jsonFieldName"',(CAST(test_json->'$."jsonFieldName"'ASSIGNEDINTEGER)-70*365-19)*86400-3600*8)wheret......
  • JS中原型、原型链的理解
    1.构造函数构造函数模式的目的就是为了创建一个自定义类,并且创建这个类的实例。构造函数模式中拥有了类和实例的概念,并且实例和实例之间是相互独立的,即实例识别。构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写。另外就是调用方式的不......
  • jsp js iframe用post方式提交大数据
    <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title>NewDocument</title><metaname="Generator"content="Edi......
  • js url urlencoding,乱码,编码,解码,编解码
    %25%37%DD上述形式不是乱码。这是urlencoding。可以使用js内置的方法encodeURIComponent进行编码再使用decodeURIComponent把上述形式再解码为普通字符对付火狐的自动编码有特效黑色头发:http://heisetoufa.iteye.com/......
  • Day 28 28.2 JS进阶之eval和hook函数
    JS进阶之eval函数和hook函数【一】evaleval()函数计算JavaScript字符串,并把它作为脚本代码来执行。如果参数是一个表达式,eval()函数将执行表达式。如果参数是Javascript语句,eval()将执行Javascript语句。eval(string)//eval('[1,2,3,4,5].map(x=>x*x)')h......
  • Day 28 28.1 JS进阶之三元运算符
    JS工具之三元运算符【1】格式三元运算符:条件表达式?语句1:语句2;leta=10;letb=20;letd=a>b?a:bconsole.log(d);注释:条件运算符在执行时,首先对条件表达式进行求值,如果该值为true,则执行语句1,并返回执行结果如果该值为false,则......