Javascript数组排序sort方法和自定义排序方法

Javascript数组排序sort方法和自定义排序方法前言针对一个数组进行排序,一个很常见的需求.尤其在后端.当然,前端也是有这个需求的.当然,数组排序,是有现成的方法的.就是sort()方法.我们先开看下这个.标准答案,sort方法vararr=[45,98,67,57,85,6,58,83,48,18];console.log(‘原数组’);console.log(arr);console.log(‘sort方…

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

前言

针对一个数组进行排序,一个很常见的需求.尤其在后端.当然,前端也是有这个需求的.

当然,数组排序,是有现成的方法的.就是sort()方法.

我们先开看下这个.

标准答案,sort方法

var arr = [45,98,67,57,85,6,58,83,48,18];
console.log('原数组');
console.log(arr);
console.log('sort方法从小到大排序');
console.log(arr.sort(function(a,b){ 
   return a-b}));
console.log('sort方法从大到小排序');
console.log(arr.sort(function(a,b){ 
   return b-a}));

运行结果如下:
sort方法数组排序

这里需要注意的是,sort默认是按照字母顺序来进行排序的.因此,我们在排列数字的时候,需要一个自定义函数.

如上面的代码

function(a,b){ 
   return a-b}

这就是一个从小到大的排序函数.看上去好简单的样子,但是我不理解,所以,我根据我的想法,来实现排序吧~

我的答案,for方法排序

var arr = [45,98,67,57,85,6,58,83,48,18];
console.log('原数组');
console.log(arr);
console.log('for方法从小到大排序');
console.log(arrSortMinToMax(arr));
console.log('for方法从大到小排序');
console.log(arrSortMaxToMin(arr));
// 找数组中最小的值
function arrMinNum(arr){ 
   
    var minNum = Infinity, index = -1;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i]<minNum) {
            minNum = arr[i];
            index = i;
        }
    };
    return {
  
  "minNum":minNum,"index":index};
}
// 返回数组从小到大排序结果
function arrSortMinToMax(arr){ 
   
    var arrNew = [];
    var arrOld = arr.concat();
    for (var i = 0; i < arr.length; i++) {
        arrNew.push(arrMinNum(arrOld).minNum);
        arrOld.splice(arrMinNum(arrOld).index,1)
    };
    return (arrNew);
}
// 找数组中最大的值
function arrMaxNum(arr){ 
   
    var maxNum = -Infinity, index = -1;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i]>maxNum) {
            maxNum = arr[i];
            index = i;
        }
    };
    return {
  
  "maxNum":maxNum,"index":index};
}
// 返回数组从大到小排序结果
function arrSortMaxToMin(arr){ 
   
    var arrNew = [];
    var arrOld = arr.slice(0);
    for (var i = 0; i < arr.length; i++) {
        arrNew.push(arrMaxNum(arrOld).maxNum);
        arrOld.splice(arrMaxNum(arrOld).index,1);
    };
    console.log(arr)
    return (arrNew);
}

运行结果如下图所示

for循环数组排序结果

我的方法中的知识点

  1. 当一个函数需要返回多条数据的时候,使用json对象格式比较方便.如上面的return
    {"minNum":minNum,"index":index};
  2. 如果使用 var arrOld = arr 这种方法来复制一个数组,并且,对arrOld进行操作的话,是会影响到arr这个原数组的.因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类型。arrOld得到的是引用,所以对arrOld的修改会影响到arr。

    • 复制数组的方法(一)var arrOld = arr.concat(); ,原理:concat()函数是用于拼接多个数组的函数,这种写法相当于拼接自己.也就是复制了.
    • 复制数组的方法(二)var arrOld = arr.slice(0) , 原理:slice()函数是一个截取数组的函数,设置值为0,则是全部截取,相当于复制了.
  3. splice()方法用于插入、删除或替换数组的元素。这里是使用了其删除数组中指定位置的特性.

  4. 我的方法和sort方法的差异.
    • 我的方法没有修改原数组,而sort是在原数组的基础上进行的修改.
    • 我的方法返回的是一个新数组,原数组并没有消失或者改变.(好像和上面一句是一个意思….)
  5. 排序是编程中非常非常基础并且非常非常重要的知识点.sort排序在执行大量数据的情况下,效率还是比较低的.当然,我的方法的效率也是很低的.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年6月7日 上午9:36
下一篇 2022年6月7日 上午9:36


相关推荐

  • 小米5 Android 8.0解bl,小米解BL锁超详细的图文教程「建议收藏」

    小米5 Android 8.0解bl,小米解BL锁超详细的图文教程「建议收藏」BL锁全称bootloader锁,其中bootloader中文名称为“启动加载”,其主要作用是为了保护用户的隐私数据安全,在日常使用的时候感受不到BL锁的存在,但是如果你要对手机进行刷机的话,第一步就是必须先解除手机里的BL锁,部分机子不需要解BL锁,手机是否需要解锁请到手机官方网站进行查看或者咨询。解BL锁会清除手机所有的数据,相当于手机恢复出厂设置,记得提前备份好手机里的所有资料以下是小米解锁…

    2022年5月20日
    70
  • LSTM模型介绍

    LSTM模型介绍递归神经网络(RNN)人类不会每时每刻都开始思考。当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。你不会忘掉掉所有东西,然后再从头开始思考。你的想法有持久性。传统的神经网络不能做到这一点,这是一个主要的缺点。例如,假设您想要对电影视频中每个点发生的事件进行分类。目前尚传统神经网络无法利用其对电影中先前事件的推理来预测后者。循环神经网络解决了这个问题。它们是带有循环的…

    2025年10月24日
    6
  • java基础必背知识点

    java基础必背知识点文章目录 day01 前言 入门程序 常量 变量 1 Java 程序开发三步骤 2 6 种类型的常量常量常量的分类 3 8 种基本数据类型的变量变量格式注意事项 day02 数据类型转换 运算符 方法入门 1 强制转换注意事项 2 ASCII 编码表 3 运算符 4 三元运算符 day03 流程控制语句 1 判断语句 if elseif else2 选择语句 switch 注意事项 3

    2026年3月17日
    1
  • IntelliJ IDEA 快捷键整合(大全)

    IntelliJ IDEA 快捷键整合(大全)IntelliJIDEA快捷键整合大全1.代码标签输入完成后,按Tab,生成代码。2.查询快捷键3.其他快捷键4.svn快捷键5.调试快捷键6.重构7.其他1.代码标签输入完成后,按Tab,生成代码。Ctrl+Alt+O优化导入的类和包Alt+Insert生成代码(如get,set方法,构造函数等)或者右键(Generate)fori/sout/psvm+TabCtrl…

    2022年5月15日
    66
  • Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]

    Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]1.https://tortoisesvn.net/downloads.html网站下载2.安装的时候如果出现下图的报错打开这个网站https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=49062,会自动帮你下载下载完成后安装即可3.没有特殊需求则默认安装4.出现这个则安装成功MySQL安装…

    2022年8月19日
    9
  • linux–文件夹下批量改动IP「建议收藏」

    linux–文件夹下批量改动IP

    2022年1月19日
    49

发表回复

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

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