这里分享一个处理连续数据的两个办法,记录一下,说不定自己以后还会遇到。

(1)纯数组类型

如代码,将里面连续相同的数字找出来

oldArr = [1,1,,2,3,3,3,7,8,9,15,17,17,18,19,19,19];function fn(arr){var result = [],i = 0;result[i] = [arr[0]];arr.reduce(function(prev, cur){cur === prev ? result[i].push(cur) : result[++i] = [cur];return cur;});return result;
}fn(oldArr);

执行结果:


(2)数组对象类型

将数组对象中连续cupName相同的数据找出来

var  newdata =  [
{"duration": 48,
"dataSource": 3,
"cupName": "对战平台测试组",
"roundRemark": ""
},
{"duration": 27,
"dataSource": 3,
"cupName": "对战平台测试组",
"roundRemark": ""
},
{"duration": 35,
"dataSource": 3,
"cupName": null,
"roundRemark": null
},
{"duration": 25,
"dataSource": 1,
"cupName": null,
"roundRemark": null
}
];function fn2(arr){var result = [],i = 0;result[i] = [arr[0]];arr.reduce(function(prev, cur){cur.cupName === prev.cupName ? result[i].push(cur) : result[++i] = [cur];return cur;});return result;
}fn2(newdata);

执行结果:

(3)实用场景

那有什么实用场景呢?
如下图数据,这里呢,需要给每个cupName 相同,且dataSource =3的连续数据,头部加一个logo,底部和其他数据分开。

思路:

1、将连续的数据找出来,转换成一个二维数组
fns2(arr) {var result = [],i = 0;result[i] = [arr[0]];arr.reduce(function(prev, cur) {cur.cupName === prev.cupName ? result[i].push(cur) : (result[++i] = [cur]);return cur;});return result;}

想要得到的结果:

[[{"duration": 48,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": ""},{"duration": 27,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": ""}],[{"duration": 35,"dataSource": 3,"cupName": null,"roundRemark": null},{"duration": 25,"dataSource": 1,"cupName": null,"roundRemark": null}]
]
2、 为连续数据的头和尾添加标志(头是添加logo,尾是隔开和其他数据)
addHeadAndTail(data) {data.forEach((v) => {//只有一个元素if (v.length === 1) {if (v[0].cupName && v[0].dataSource === 3) {v[0].head = true;v[0].end = true;}//包含多个元素} else {v.forEach((k) => {if (k.cupName && k.dataSource === 3) {v[0].head = true;v[v.length - 1].end = true;}});}});return data;
}

想要得到的结果:

[[{"head ":true,"duration": 48,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": "",},{"end ":true,"duration": 27,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": ""}],[{"duration": 35,"dataSource": 3,"cupName": null,"roundRemark": null},{"duration": 25,"dataSource": 1,"cupName": null,"roundRemark": null}]
]

3、 将数据在展开为原来的形式
 let data2 = this.addHeadAndTail(data1);let data3 = [];
data2.forEach((v) => {data3.push(...v);});

想要得到的结果:

[{"head ":true,"duration": 48,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": "",},{"end ":true,"duration": 27,"dataSource": 3,"cupName": "对战平台测试组","roundRemark": ""},{"duration": 35,"dataSource": 3,"cupName": null,"roundRemark": null},{"duration": 25,"dataSource": 1,"cupName": null,"roundRemark": null}
]

获取数组中连续相同的元素相关推荐

  1. Matlab: 获取数组中不重复的元素,可以使用unique(arr)函数即可

    matlab中可以使用 a = unique(train_target) python中可以使用 a = set(train_target) 不积跬步,无以至千里;不积小流,无以成江海 跟着教程学,是 ...

  2. python获取数组中最多的元素

    获取数组中数量最多的元素,也就是最频繁的那个元素,方法有很多,下面是3种最简单的: 1.用max函数 sample = [1,2,3,3,3,4,5,5] max(set(sample), key=s ...

  3. php 数组重复最多,PHP获取数组中重复最多元素的简单示例

    这篇文章主要为大家详细介绍了PHP获取数组中重复最多元素的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 本文实例讲述了PHP获取数组中重复最 ...

  4. Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)

    Java创建数组的三种方法 import java.util.Arrays; public class Sum { public static void main(String[] args){ in ...

  5. python取数组最后一个元素_Python Json。只获取json数组中的最后一个元素

    我刚开始尝试python,现在我有点左右为难.在 我试图从一个json文档打印,而我只得到数组中的最后一个元素.在[{ "FullMeasure": "1/2 cup&q ...

  6. 获取数组中元素值为偶数的累加和与元素值为奇数的累加和,并计算他们之间的差值

    /*** 1.获取数组中元素值为偶数的累加和与元素值为奇数的累加和,并计算他们之间的差值* 1.定义int getNum(int[] arr)静态方法,该方法要求完成* 1.1 获取指定数组arr中元 ...

  7. scala 获取数组中元素_从Scala中的元素列表中获取随机元素

    scala 获取数组中元素 We can access a random element from a list in Scala using the random variable. To use ...

  8. 分答项目_知识点:如何获取jquery选择器生成的input元素数组中的每个input元素的值?

    我最初的想法: (1)jquery选择器获取后将dom元素放到attachnew中了,在遍历数组中可以attachnew[i].value属性即可获取input元素的值: (2)此处用的attachn ...

  9. js使用slice方法获取数组中某段元素

    js使用slice方法获取数组中某段元素 slice() 方法可从已有的数组中返回选定的元素. 语法:arrayObj.slice(start, [end]) 参数: start:必需.规定从何处开始 ...

最新文章

  1. C++ list插入元素源码分析及过程图
  2. linux read命令用法
  3. Druid 在spring中的配置
  4. 九、二手信息站点后台完成 (IVX 快速开发教程)
  5. 五、scrapy爬虫框架——logging 模块的使用
  6. [PHP] - Laravel - CSRF token禁用方法与排除验证csrf_token的url设置
  7. php 检查txt中全角大写字母的个数
  8. 聚类算法论文研读 record
  9. AIDA64 5.92.4300 序列号
  10. 计算机人工智能领域英文文献,人工智能英文文献译文.doc
  11. jsp案例分析(二)-聊天室-2-逆向建模
  12. 【小程序源码】游戏助手王者荣耀战力查询,游戏扫码登录器等
  13. Springcloud整合Eureka报错[TransportException: Cannot execute request on any known server.]一站式解决
  14. 支付宝赚赏金的多种玩法(引流+变现日入200+)
  15. 67键键盘如何输出`和~符号(一百五十一)
  16. word文档怎么删除多余的空白页?
  17. 中国PI膜行业市场需求趋势分析及十四五前景预测报告2021-2027年版
  18. 路由器重温——ADSL/VDSL接口配置管理
  19. 多维数据格式mdd结构与计算机配套系统,多维数据分析系统
  20. GHOSTXPSP3电脑爱好者V9.9装机版

热门文章

  1. value toDF is not a member of org.apache.spark.rdd.RDD[People]
  2. d3.js中的选择元素
  3. RecycleView 与 Elevation
  4. spring 配置定时任务
  5. webapp 中为span元素赋值
  6. 可能 delphi7 下稳定的最后一版本 GDIPLUS
  7. CCNA实验(9) -- Frame Relay
  8. 巧妙的查看FORM中的 LOV查询语句
  9. 构造器和析构器 - C++快速入门15
  10. blog被封了文章全被删除了,郁闷