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] 面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组 ...
随机推荐
- Liferay7 BPM门户开发之24: Liferay7应用程序安全
整理中...... Resources, Roles, and PermissionsPortal Access Control List (PACL) Custom SSO Providers Au ...
- null、undefined、typeof、instanceof
目录 概述 null undefined typeof instanceof 概述 JavaScript(ECMAScript标准)里共有5种基本类型: undefined, null, Boolea ...
- 写在19年初的后端社招面试经历(两年经验): 蚂蚁 头条 PingCAP
去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer.想着可以总结一下经验,分享一下自己这一段"骑驴找马"过 ...
- oracle中常见的对表、表空间和视图的操作
创建表:create table t1(key1 type default 0,key2 type not null) 删除表:drop table t1; 删除表数据:truncate table ...
- 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 1.Practice questions:Detection algorithms
[解释] tree的两个bounding boxes 都要保留,因为交并比小于0.5:car 0.73保留:pedestrain 0.98保留:motorcycle 0.58保留.一共5个. [解释] ...
- Android生成自定义二维码
前面说过两种二维码扫描方式,现在说如何生成自定义酷炫二维码.二维码生成需要使用Google开源库Zxing,Zxing的项目地址:https://github.com/ZBar/ZBar,我们只需要里 ...
- Java 动态生成 PDF 文件
每片文章前来首小诗: 今日夕阳伴薄雾,印着雪墙笑开颜.我心仿佛出窗前,浮在半腰望西天. --泥沙砖瓦浆木匠 需求: 项目里面有需要java动态生成 PDF 文件,提供下载.今天我找了下有关了,系 ...
- 从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 CSS3(三)渐变,background属性
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- SQL 必知必会·笔记<8>分组数据
1. 使用GROUP BY子句创建分组 示例: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 注意 GRO ...