JS数组分组
//1.找出数组中相同的元素
getRepeatNum(arr) {
let obj = {};
for (let i = 0, len = arr.length; i < len; i++) {
if (obj[arr[i]] == undefined) {
obj[arr[i]] = 1;
} else {
obj[arr[i]]++;
}
}
for (let key in obj) {
obj[key] <= 1 && delete obj[key];
}
return Object.keys(obj);
},
//2.根据数组的某个参数进行分组
getGroupNum(arr) {
let newArry = {};
for (let i = 0; i < arr.length; i++) {
if (newArry[arr[i].num.errcode]) {
newArry[arr[i].num.errcode].push(arr[i].num.num)
}
else {
newArry[arr[i].num.errcode] = [arr[i].num.num]
}
}
return newArry
},
变型:
getGroupNum(arr) {
let newArry = {};
for (let i = 0; i < arr.length; i++) {
const obj = {
time:arr[i].statis_time,
num:arr[i].num.num,
};
if (newArry[arr[i].num.errcode]) {
newArry[arr[i].num.errcode].push(obj)
}
else {
newArry[arr[i].num.errcode] = [obj]
}
}
return newArry
},
遍历:数组或对象
let errcodeRepeat = this.getRepeatNum(errcode);
let seriesData = this.getGroupNum(res.data.info);
errcodeRepeat.map(item=>{//数组
series.push({
name:item,
data:seriesData[item],
type:'line',
})
});
const seriesObj = this.getGroupNum(res.data.info);
const xAxis = res.data.info.map(item => item.statis_time);
// const xAxisGroup = [];
const errcode = [];
const series = [];
Object.keys(seriesObj).map(key=>{//对象:key和obj(key)
errcode.push(key);
// const xAxisData = [];
const seriesData = [];
seriesObj[key].map(item=>{
// xAxisData.push(item.time);
seriesData.push(item.num);
});
// xAxisGroup.push({
// data:xAxisData,
// });
series.push({
name:key,
data:seriesData,
type:'line',
});
});
总结:
首先拿到的是一堆未分组的数组:[{...}];
其次根据某个字段进行分组等到:
1.对象:{key:[...]}
2.新数组:[
{ name:key,data:[]}
...
]
实现方法:
//数组变型得到新数组
arryGroupMatch(arr) {
var map = {}
var dest = []
for (var i = ; i < arr.length; i++) {
var ai = arr[i]
if (!map[ai.errno]) {
dest.push({
errno: ai.errno,
data: [ai]
})
map[ai.errno] = ai
} else {
for (var j = ; j < dest.length; j++) {
var dj = dest[j]
if (dj.errno === ai.errno) {
dj.data.push(ai)
break
}
}
}
}
return dest
} // lodash插件方法:
import _ from 'lodash'
const oldArr = _.groupBy(arr, 'xxx');//对象
let newArr = []
Object.keys(oldArr).forEach(key=>{// 数组
newArr.push({name:key,data:oldArr[key]})
})
JS数组分组的更多相关文章
- js对数组分组处理
一.js数组分组 1.js对数据分组类似group by 源码如下: <!DOCTYPE html> <html lang="en"> <head&g ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- 转→js数组遍历 千万不要使用for...in...
看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...
- js数组操作大全
原文(http://www.cnblogs.com/webhotel/archive/2010/12/21/1912732.html) 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简 ...
- js数组去重的4种方法
js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...
- PHP 根据key 给二维数组分组
我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组.先来看以下数组, Array ( [0] => Array ( [id] => 1 ...
- js 数组处理函数
本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...
- js 数组赋值问题 :值传递还是引用?
转载于知乎var a = [1,2,3]; var b = a; a = [4,5,6]; alert(b); //[1,2,3] 面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组 ...
随机推荐
- Android生成二维码--拍照或从相册选取图片
拍照或从相册选择图片是我们日常开发中经常使用到的,可以说是必须掌握的东西.上一篇我介绍了如何生成自定义二维码<Android生成自定义二维码>,其中logo和代替黑色色块的图片都是写死的, ...
- Vue + Element UI 实现权限管理系统 前端篇(十四):菜单功能实现
菜单功能实现 菜单接口封装 菜单管理是一个对菜单树结构的增删改查操作. 提供一个菜单查询接口,查询整颗菜单树形结构. http/modules/menu.js 添加 findMenuTree 接口. ...
- mysql创建表时,设置timestamp DEFAULT NULL报错1067 - Invalid default value for 'updated_at'
问题背景: 线上的linux服务器上的mysql服务器中导出数据库的结构.想要在本地创建一个测试版本 导出后再本地mysql上运行却报错 1067 - Invalid default value ...
- linux下configure,make,make install的意义
tar.gz.tar.bz2的是源代码包,需要编译之后才能安装,在编译过程中你可以指定各种参数以适应你的系统需求,比如安装位置,优化参数,要哪些功能不要哪些功能等等.这类源代码包需要解压后(tar.g ...
- [HEOI2017] 相逢是问候
Description 支持以下两个操作: 将第 \(l\) 个数到第 \(r\) 个数 \(a_l,a_{l+1},\dots a_r\) 中的每个数 \(a_i\) 替换为 \(c^{a_i}\) ...
- angularjs学习第九天笔记(指令作用域【隔离作用域】研究)
您好,昨天学习了指令作用域为布尔型的情况, 今天主要研究其指针作用域为{}的情况 1.当作用域scope为{}时,子作用域完全创建一个独立的作用域, 此时,子做预约和外部作用域完全不数据交互 但是,在 ...
- Ocelot中文文档-Configuration
配置 一个关于Ocelot配置例子在这里.配置有两个部分.一个数组类型的ReRoutes和一个全局配置.ReRoutes是个对象,告诉Ocelot怎么去处理一个上游请求.全局配置有点繁琐(is a h ...
- lucene 核心概念及入门
lucene Lucene介绍及核心概念 什么是Lucene Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供.Lucene提供了一个简单却强大的应用程序接口 ...
- 学Java的第17天。呃。。。今天有点奇葩
神奇的老师在网上看到狗跳楼的视频然后就想到抛物线问题: 还是 属性和方法的调用: package sklx; public class Dog{ private float v = 30.0f; pr ...
- Java集合的选择
我们在使用集合时应该使用哪个集合呢? 具体还是要看需求, 当然, Java中不只是有这几个, 还有一些没有给出, 具体情况具体分析吧, 仅给出一个小思路. 进行集合的选择: 是否是键值对象形式: 一 ...