对数组(包括json数组)中相邻元素查重,并记录每个元素的重复个数

冷不防 2022-05-11 05:10 233阅读 0赞

先看效果:

70

70 1

代码如下:

  1. //定义
  2. function getMergeArr(oldArr,jsonName){
  3. console.log('哈哈',oldArr[0][jsonName])
  4. var newItem = [];
  5. var j=0;
  6. var count = 1;
  7. for(var i=0;i<oldArr.length;i++){
  8. if(jsonName){
  9. // json数组
  10. if(!oldArr[i+1]){
  11. console.log('最后的i',i)
  12. oldArr[i].count = count;
  13. count = 1;
  14. newItem[j] = oldArr[i];
  15. j++;
  16. }else{
  17. console.log(oldArr[0][jsonName])
  18. if(oldArr[i][jsonName] != oldArr[i+1][jsonName]){
  19. console.log(i,i+1)
  20. oldArr[i].count = count;
  21. count = 1;
  22. newItem[j] = oldArr[i];
  23. j++;
  24. }else{
  25. count++;
  26. if( i == oldArr.length-1){
  27. console.log('最后的相同的i',i)
  28. // 如果是最后相同的
  29. console.log('值',count)
  30. oldArr[i].count = count;
  31. newItem[j] = oldArr[i];
  32. j++;
  33. }
  34. }
  35. }
  36. }else{
  37. // 数组
  38. if(oldArr[i] != oldArr[i+1]){
  39. oldArr[i]= oldArr[i]+'X'+count;
  40. count = 1;
  41. newItem[j] = oldArr[i];
  42. j++;
  43. }else{
  44. count++;
  45. if( i == oldArr.length-1){
  46. // 如果是最后相同的
  47. console.log('值',count)
  48. oldArr[i]= oldArr[i]+'X'+count;
  49. newItem[j] = oldArr[i];
  50. j++;
  51. }
  52. }
  53. }
  54. }
  55. return newItem;
  56. }
  57. //使用
  58. var oldArr = ['旅行箱', '旅行箱', '小米', '大大米','黑米','黑米','黑米','黑米','小米','heimi','小米','小米','小米','小米','米'];
  59. var oldJsonArr = [{name:'启动',duration:'60'},{name:'游戏',duration:'180'},{name:'游戏',duration:'180'},{name:'over',duration:'60'},{name:'over',duration:'60'}]
  60. console.log('test1',getMergeArr(oldArr))
  61. console.log('test2',getMergeArr(oldJsonArr,'name'))

注意:针对数组完美,针对json数组,可以根据自己实际情况进行修改函数(我是根据我自己的情况name相同的duration也相同,如果不同自己可以计算和等等,需要讨论的话,公众号:wander_yun)

发表评论

表情:
评论列表 (有 0 条评论,233人围观)

还没有评论,来说两句吧...

相关阅读

    相关 找出数组重复元素

    注意:找出数组中重复的元素,数组中也有可能不存在重复的数,也有可能存在多个 方法一:使用位图法,再申请一个数组b,用b\[a\[i\]\]存储a\[i\]的重复次数:

    相关 找出数组重复元素

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复