首页 > 编程语言 >【Javascript】数组扩展方法:根据key重新分组

【Javascript】数组扩展方法:根据key重新分组

时间:2023-07-19 10:34:02浏览次数:44  
标签:originalArr name resultData Javascript field score 分组 key subject



 1 //数组扩展:根据key重新分组
 2 //field:按什么字段分组
 3 Array.prototype.GroupByKey = function ( field )
 4 {
 5     var originalArr = this
 6     let tempArr = []
 7     let resultData = []
 8     for ( let i = 0; i < originalArr.length; i++ )
 9     {
10         if ( tempArr.indexOf( originalArr[ i ][ field ] ) === -1 )
11         {
12             resultData.push( {
13                 [ field ]: originalArr[ i ][ field ],
14                 data: [ originalArr[ i ] ]
15             } )
16             tempArr.push( originalArr[ i ][ field ] )
17         } else
18         {
19             for ( let j = 0; j < resultData.length; j++ )
20             {
21                 if ( resultData[ j ][ field ] == originalArr[ i ][ field ] )
22                 {
23                     resultData[ j ].data.push( originalArr[ i ] )
24                     break
25                 }
26             }
27         }
28     }
29     return resultData // 最终输出
30 }

 

使用例子:
var scoreArr = [
    { name: "小明", subject: "语文", score: 88 },
    { name: "小明", subject: "数学", score: 58 },
    { name: "小红", subject: "数学", score: 85 },
    { name: "小红", subject: "语文", score: 99 },
]
var resultArr = scoreArr.GroupByKey( "name" )

 

得到结果:
[
    {
        name: "小明",
        data: [ { name: "小明", subject: "语文", score: 88 },
        { name: "小明", subject: "数学", score: 58 } ]
    },
    {
        name: "小红",
        data: [ { name: "小红", subject: "数学", score: 85 },
        { name: "小红", subject: "语文", score: 99 } ]
    }
]

  

标签:originalArr,name,resultData,Javascript,field,score,分组,key,subject
From: https://www.cnblogs.com/Sunlimi/p/17564882.html

相关文章

  • JavaScript 笔记(二)事件循环机制
    一、事件循环机制1.定义:事件循环是JavaScript中一种重要的异步执行机制。2.作用:管理和协调各种异步任务的执行顺序,保证JavaScript代码的执行顺序和预期一致。3.组成部分:3.1主线程(调用栈):执行任务;3.2任务队列:存放异步任务;3.3事件循环......
  • [Javascript] DOM alias $, $$
    const$=()=>document.querySelector.call(this,arguments);const$$=()=>document.querySelectorAll.call(this,arguments);HTMLElement.prototype.on=(a,b,c)=>this.addEventListener(a,b,c);HTMLElement.prototype.off=(a,b)=>this.......
  • Java使用Stream函数对集合进行分组
    1List<Map<String,String>>list=newArrayList<>();2Map<String,String>map1=newHashMap<>();3map1.put("name","卢俊义");4map1.put("book","水浒传"......
  • login remote with ssh private key
    chmod700-rwx------blanklineatthebottomofthefile,LFloginsshname@ip-i/path//private.keyexitdebugblanklineLFvalidatethepublickeyssh-keygen-l-fthe.pub......
  • Python的布尔值转换为JavaScript的布尔值
    在Python后端开发中,我们返回布尔值通常为True,False。而不是'true','false',但在JavaScript必须使用小写的true和false,且不是字符串。这时就必须在前端对数据进行转换了。后端返回{"status":200,"data":["show":True,"verf":False]}前端转换代码response.data.forEach......
  • javascript-js正则表达式-常用的正则表达式
    js常用的正则表达式1.匹配Email地址:constemailRegex=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;2.匹配URL:consturlRegex=/^(https?:\/\/)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]+)?(\/[^\s]*)?$/;3.匹配日期(YYYY-MM-DD):constdateRegex=/^\d{4}-(0[1-9]|......
  • 使用 JavaScript 脚本来进行复杂的查询改写
    有这么一个需求:网关里怎样对跨集群搜索进行支持的呢?我想实现:输入的搜索请求是lp:9200/index1/_search这个索引在3个集群上,需要跨集群检索,也就是网关能否改成lp:9200/cluster01:index1,cluster02,index1,cluster03:index1/_search呢?索引有一百多个,名称不一定是app,还......
  • JavaScript
    一、什么是JavaScript?1.JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互;2.JavaScript和Java是完全不同的语言,不论是概念还是设计。但是基础语法类似;3.JavaScript在1995年由BrendanEich发明,并于1997年成为ECMA标准;4.ECMAScript......
  • 【技术积累】JavaScript中的基础语法【三】
    JavaScript的条件结构JavaScript中的条件结构主要包括if语句、if-else语句、if-elseif语句和switch语句。这些条件结构用于根据不同的条件执行不同的代码块。if语句if语句用于在满足条件时执行一段代码块。语法如下:if(condition){//codetobeexecutedifconditioni......
  • abc310d <dfs暴搜-分组方案数 / bitmask表示集合+dp>
    题目D-PeacefulTeams参考:https://www.cnblogs.com/legendstane/p/freee-programming-contest-2023-atcoder-beginner-contest-abc-310-solution.htmlhttps://blog.csdn.net/Muelsyse_/article/details/131747083思路方法1dfs暴搜由于数据范围极小,所以直接暴力即可......