js 二维数组排序

js 二维数组排序我们知道在 js 中默认提供了 sort 函数 但是这个函数默认是按照数组内容的 ascii 码升序进行排列的 如果我们要对二维数组排序要如何做呢

我们知道在js中默认提供了sort函数,但是这个函数默认是按照数组内容的ascii码升序进行排列的,如果我们要对二维数组排序要如何做呢?在 php中是有multi_sort函数可供调用的,但是在js中似乎没有这种函数,但是没关系 ,因为js的sort函数其实也提供了参数可以定义比较函数进行二维数组的排序。

1、按数值排序 假设有如下数组 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; 这里如果我们要按每个子数组的第一列来排序要如何做呢,我们可以定义一个比较函数: arr.sort(function(x, y){ return x[0] - y[0]; });

这 里的比较函数的作用是什么呢?其实是数组依次将数组元素复制给x,y,比如首先将arr[0]赋给x,arr[1]赋给y,然后用x[0] – y[0],根据返回的值,如果返回的是大于0的数,那么就把数组中x放到y的后面,如果返回的是0则不变,小于0则将x放到y的前面,然后第一个排序好之 后在进行下面两个的排序,直到整个数组排序完成。这是默认升序的比较函数,如果要降序排列则只需修改比较方式,改为 return y[0] – x[0] 即可,这里我们x[0]表示是按第一列进行排序,我们这里也可以按其他列进行排序。这里的排序默认就会修改arr的数组结构,所以排序完arr就是按第一 列升序的数组了。

2、按字符串排序

按字符串排序的话呢,我们可以利用js提供的localeCompare方法,

localeCompare作用:用本地特定的顺序来比较两个字符串。

localeCompare 方法的使用规则是stringObject.localeCompare(target),如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0,器比较使用的是本地的规则,本地规则意思就是使用操作系统底层对这些本地字符排序的规则进行排序,默认情况下比如使用大于号这样的比较只是纯粹比较两 个字符的unicode的数大小,会与很多语言不符。

比如 var arr = [['中', '国'], ['啊', '的'], ['哦', '的']]; arr.sort(function(x, y){ return x[0].localeCompare(y[0]); });

结 果就会按第一列中文字的拼音排序,如果含有英文的话,默认是将英文放在前面,如果是纯英文的话,会按字母顺序来,大写排在小写的后面,这样就可以实现字符 串的排序了,包括中文和中英混排。至于要降序排列的话,方法与上面相同,改成return y[0].localeCompare(x[0]); 即可。

源自:http://apps.hi.baidu.com/share/detail/

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

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

(0)
上一篇 2026年3月18日 下午2:27
下一篇 2026年3月18日 下午2:27


相关推荐

  • 5.6 读和写流

    5.6 读和写流

    2021年8月14日
    52
  • 指数函数求导_常见求导公式表

    指数函数求导_常见求导公式表a^x=y求y'y'=d(a^x)/dx=lim(x->0):(a^(x+dx)-a^x)/dx(1)根据指数函数可推出:x^(y+z)=x^y*x^z所以(

    2022年8月2日
    7
  • Linux安装maven(详细教程)

    Linux安装maven(详细教程)一 简介 Maven 是意第绪语 意思是 知识的积累者 最初是为了简化 JakartaTurbi 项目中的构建过程 有几个项目 每个项目都有自己的 Ant 构建文件 所有项目都略有不同 JAR 已检入 CVS 我们想要一种标准的方式来构建项目 清晰地定义项目的组成 一种简单的方式来发布项目信息 以及一种在多个项目中共享 JAR 的方式 结果是一个可以用于构建和管理任何基于 Java 的项目的工具 我们希望我们已经创建了一些东西 可以使 Java 开发人员的日常工作更加轻松 并且通常有助于理解任何基于 Java 的项目 二 准

    2026年3月26日
    2
  • android系统webview最新版本_webview加载h5页面空白

    android系统webview最新版本_webview加载h5页面空白做android聊天时,遇到过一个问题,h5的页面发送的图片在android端不能响应,ios那边一路畅通。也是相当无奈,目前发现了好多android端与ios端webView的异同。android端与ios确的不同大致包括:1:android不能直接打开html的下载文件,需要先下载保存本地在打开本地文件2:android不能直接打开pdf文件,同样要下载再打开3:如题,h5页面的发送图片按钮点…

    2026年2月17日
    4
  • 分割成数组php字符串函数,PHP 分割字符串函数把字符串分割成数组示例

    分割成数组php字符串函数,PHP 分割字符串函数把字符串分割成数组示例这篇文章主要为大家详细介绍了 PHP 分割字符串函数把字符串分割成数组示例 具有一定的参考价值 可以用来参考一下 对 PHP 分割字符串函数把字符串分割成数组感兴趣的小伙伴 下面一起跟随 512 笔记的小编两巴掌来看看吧 在 php 中字符串分割有很多 如有 str split explode chunk split 函数 下面我给大家分别整理了一些实例 希望能给大家带来帮助 str split 可以将字符

    2026年3月18日
    1
  • AI动态汇总:智谱发布GLM-4.5 蚂蚁数科发布金融推理大模型AGENTAR-FIN-R1

    AI动态汇总:智谱发布GLM-4.5 蚂蚁数科发布金融推理大模型AGENTAR-FIN-R1

    2026年3月12日
    2

发表回复

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

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