获取数组中连续相同的元素
生活随笔
收集整理的這篇文章主要介紹了
获取数组中连续相同的元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里分享一個處理連續數據的兩個辦法,記錄一下,說不定自己以后還會遇到。
(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} ]總結
以上是生活随笔為你收集整理的获取数组中连续相同的元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue全局注册组件实例
- 下一篇: 鼠标经过替换背景和文字