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]))

 

 

 

 

 

 

 

 

 

 

 

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

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 正确姿势临时和永久开启关闭Android的SELinux

    正确姿势临时和永久开启关闭Android的SELinux      正确姿势临时和永久关闭Android的SELinux前言  自从Android4.4强制开启SELinux以后,在开发中我们经常会遇到avcdenied的问题,为了方便开发调试我们会将SELinux关闭,那么本章将带领读者怎么临时和永久关闭Android的SELinux。正确姿势临时和永久关闭Android的SELinux1.1临时关闭Andro…

  • CSS div隐藏滚动条「建议收藏」

    CSS div隐藏滚动条「建议收藏」隐藏指定div或者滚动标签里面的滚动条。<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><title>Document</title><style>/*.

    2022年10月28日
  • python menuconfig_如何配置 ESP32 Menuconfig

    python menuconfig_如何配置 ESP32 Menuconfig如何配置ESP32Menuconfig准备我们可以有2种方式进入menuconfig模式1在Eclipse界面启动MenuConfigTarget(需参照如何使用安信可ESP系列一体化开发环境IDF章节);2打开Cygwin.bat,进入工程目录,执行makemenuconfig指令。这2种方法最终实现的效果都是一致的,您可以根据自己的需要进行选择。介绍执行…

  • 嵌入式linux实时操作系统及应用编程pdf(嵌入式linux都有哪些调试信息)

    目录目录前言GDB调试工具介绍GDB调试教程gcc调试相关编译选项GDB交叉调试环境搭建下载地址编译过程总结链接地址前言项目遇到一个问题,就是程序在Ubuntu下运行的时候是正常的,至少大部分时候运行是正常的,但是移到开发板上,就会出现段错误。这时候突然想到了GDB,从来都没有接触过调试工具,以前的调试都是使用printf直接打印的方式!!!

  • 报错解决:Downloading VS Code Server failed. Please try again later.

    报错解决:Downloading VS Code Server failed. Please try again later.之前写过教程:Windows下使用VSCode远程SSH连接Linux服务器进行开发vscode使用ssh密钥登录远程Linux–vscoderemotelinuxsshkey

  • Anaconda在PowerShell中无法使用activate激活环境

    Anaconda在PowerShell中无法使用activate激活环境Anaconda在PowerShell中无法使用activate激活环境并且使用AnacondaNavigator管理器也是可以成功激活环境的:但是问题来了:我在windows自带的WindowsPowerShell里使用activate命令切换环境时,命令明明已经成功执行,但却没有成功切换环境,如图:经过…

发表回复

您的电子邮箱地址不会被公开。

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