javascript 数组排序,找到相同元素[通俗易懂]

javascript 数组排序,找到相同元素[通俗易懂]小白前端一个,公司项目,里面有一个数组增加,删除,去重,排序,找到相同元素个数等等…这是冒泡排序vararr=[10,20,1,2];vart;for(vari=0;i<arr.length;i++){for(j=i+1;j<arr.length;j++){if(arr[i]>arr[j]){t…

大家好,又见面了,我是你们的朋友全栈君。

小白前端一个,公司项目,里面有一个数组增加,删除,去重,排序,找到相同元素个数等等…

这是冒泡排序
var arr = [10, 20, 1, 2];
var t;
for(var i=0;i<arr.length;i++){
    for(j=i+1;j<arr.length;j++){
        if(arr[i]>arr[j]){
            t=arr[i];
            arr[i]=arr[j];
            arr[j]=t;
        }
    }
}
console.log(arr);  //[1, 2, 10, 20]

for循环运行的次序是,外层先走一步,然后内层走完,然后外层再走一步,内层再走一圈。

具体来说,
i=0: j依次遍历0,1,2,3,4,5,6,7,在交换

接下来i=1; j依次遍历1,2,3,4,5,6,7
结果是剩下数中最小的

然后i=2;j遍历2,3,4,5,6,7

i=3;j走过3,4,5,6,7
.
.
.
最后的结果就是数组被排序了。



function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {      
                var temp = arr[j+1];        
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
console.log(bubbleSort([10, 20, 1, 2]))
这个方法就是排序了,从小到大,对一个叫做arr的数组排序
function sortId(a,b){  
        return a.id-b.id  
   }
arr.sort(sortId);

此方法
for (let i = 0; i < arr.length;) {
        let count = 0;
        for (let j = i; j < arr.length; j++) {
          if (arr[i].id === arr[j].id) {
            count++;
          }
        }
        newarr.push({
          date: arr[i],
          count: count
        })
        i+=count;
      }
      console.log(newarr);

//这里就是返回一个newarr的数组,里面有排序好的数组,还有相同元素的个数
快速排序
function quickSort(arr){
  if(arr.length<=1){
    return arr;
  }
   var pivotIndex = Math.floor(arr.length / 2) ;
   var pivot = arr.splice(pivotIndex, 1)[0];
   var left = [];
   var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
}
console.log(quickSort([95]))

 

 

 

 

 

 

 

 

 

 

 

以上就是一个简单的数组应用,打完收工

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133463.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 解释ER图并说明它的作用_er图中属性用什么表示

    解释ER图并说明它的作用_er图中属性用什么表示展开全部1、描述现实世界关系62616964757a686964616fe78988e69d8331333431356566概念模型的有效方法。2、表示概念关系模型的一种方式。3、用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;4、用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实…

    2022年9月16日
  • busybox如何安装(如何安装busybox)

    step1.adbpushc:/busybox/mnt/sdcard/step2.用”re文件管理器”把已经拷到sdcard的busybox移动到/system/xbin目录step3.依次执行下面adb命令adbshellsumount-oremount,rw-tyaffs2/dev/block/mtdblock3/systemcd/syste

    2022年4月12日
  • document.activeElement_加载xml错误

    document.activeElement_加载xml错误&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;bodyonload="loadFun()"&gt;&lt;divid="myDiv"&gt;&lt;/div&gt;&lt;scriptlanguage="javascript"&gt;&lt;!–   functionloadFun(

    2022年10月14日
  • LAN8720A网络模块关于时钟的使用问题「建议收藏」

    LAN8720A网络模块关于时钟的使用问题「建议收藏」微雪的LAN8720A驱动电路:正点原子LAN8720A驱动电路:1、nINTSELConfiguration从原理图中可以看出正点原子的LAN8720A模块所使用的晶振是25M,而微雪的LAN8720A模块使用的晶振是50M,根据数据手册和结合原理图可以看出,微雪的LAN8720A的nINTSEL没有接下拉,则是默认使用内部上拉到高电平,即nINTSEL=1,为REF_CLKInMode模式,所以选用50M的晶振。…

    2022年6月22日
  • ERP和MES、QAS以及APS在制造企业信息化的了解

    ERP和MES、QAS以及APS在制造企业信息化的了解ERP系统企业ERP系统标准的定义来自其英文原意,即企业资源规划(EnterpiseResourcePlanning)。企业ERP系统是一个对企业资源进行有效共享与利用的系统,通过信息系统对信息进行充分整理、有效传递、使企业的资源在购、存、产、销、人、财、物等各个方面能够得到合理地配置与利用,从而实现企业经营效率地提高。从本质上讲,企业ERP系统时一套信息系统,是一种工具。系统设计中可集成某些管理思想与内容,可帮助企业提升管理水平。另外一种说法认为企业ERP系统是将企业所有资源进行整合集成管理,简单

    2022年6月28日
  • Python报错:OSError: cannot open resource

    Python报错:OSError: cannot open resourcePython报错:OSError:cannotopenresource今天借助Python第三方库写了一个简单的生成词云的编程,但在使用wordcloud生成词云过程中,出现了OSError:cannotopenresource错误,通过断点调试并查看了一些网上的解决方法找到了原因:字体属性font_path的设置与系统提供的字体不一致。在本地电脑没有所写的字体,或是字体名称后缀…

    2022年9月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号