当前位置: 首页 > news >正文

sort()的多种用法

 sort()  方法用于对数组的元素进行排序。

一、默认情况

在默认情况下, sort() 方法按升序排列数组项。为了实现排序, sort() 方法会调用每个数组项的 toString() 转型方法,然后比较得到的字符串,已确定如何排序。如下:

1 var values = ["orange","apple","banana"];
2 values.sort();
3 console.log(values);//结果["apple", "banana", "orange"]

 

但是,即使数组中的每一项都是数值,sort() 方法比较的也是字符串,如下:

1 var values = [0,1,5,10,15];
2 values.sort();
3 console.log(values);//结果[0, 1, 10, 15, 5]

 

二、对数值进行排序

 sort() 方法可以接收一个比较函数作为参数。

比较函数接收两个参数,如果第一个参数应该位于第二参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个之后则返回一个正数。

1 function compare(a, b){
2     return (a - b);
3 }//按升序排列的比较函数
4 var values = [0,1,5,10,15];
5 values.sort(compare);
6 console.log(values);//结果[0, 1, 5, 10, 15]

 

三、根据某个对象属性对数组进行排序

先定义一个函数,它接收一个属性名,然后根据这个属性名来创建一个比较函数。下面是这个函数的定义:

 1 function createComparisonFunction(propertyName){
 2     return function(object1, object2){
 3         var a = object1[propertyName];
 4         var b = object2[propertyName];
 5 
 6         if(a < b){
 7             return -1;
 8         }else if(a > b){
 9             return 1;
10         }else{
11             return 0;
12         }
13     }
14 }//返回一个根据属性名创建的按升序排列的比较函数

 

在内部函数接收到propertyName参数后,它会使用方括号表示法来取得给定属性的值。

上面这个函数可以在像在下面例子中这样使用。

1 var data = [{name:"Lily", age: 12}, {name:"Judy", age: 22}];
2 data.sort(createComparisonFunction("name"));
3 console.log(data[0].name);//Judy
4 
5 data.sort(createComparisonFunction("age"));
6 console.log(data[0].name);//Lily

 

转载于:https://www.cnblogs.com/shy-huiying/p/5297383.html

相关文章:

  • 产品生产环节的一些名词
  • 生活随笔-为知笔记发布博客到博客园
  • 对你有用的名言集锦
  • 探究adroid活动
  • animation中的steps()逐帧动画
  • asm goto与JUMP_LABEL
  • 巧用工具制作视频截图索引文件
  • 进程遍历模块遍历
  • Linux inode耗尽导致图片/文件无法上传
  • 人生好比挤地铁(地铁育新站)
  • PowerDesinger12.5破解中文版-资源共享与安装介绍
  • FZU 1343 WERTYU --- 水题
  • 困惑:关于angular backbone react
  • 微软资深软件工程师:阅读代码真的很难
  • JavaScript数据格式验证探讨
  • 《深入 React 技术栈》
  • 【347天】每日项目总结系列085(2018.01.18)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • avalon2.2的VM生成过程
  • eclipse的离线汉化
  • Flex布局到底解决了什么问题
  • javascript 哈希表
  • JS学习笔记——闭包
  • MaxCompute访问TableStore(OTS) 数据
  • mongo索引构建
  • nodejs:开发并发布一个nodejs包
  • PHP面试之三:MySQL数据库
  • Vim Clutch | 面向脚踏板编程……
  • Vue.js 移动端适配之 vw 解决方案
  • 仿天猫超市收藏抛物线动画工具库
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 算法---两个栈实现一个队列
  • 微服务入门【系列视频课程】
  • 以太坊客户端Geth命令参数详解
  • Android开发者必备:推荐一款助力开发的开源APP
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​ubuntu下安装kvm虚拟机
  • ​马来语翻译中文去哪比较好?
  • #每日一题合集#牛客JZ23-JZ33
  • (3)选择元素——(17)练习(Exercises)
  • (6)添加vue-cookie
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (floyd+补集) poj 3275
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十八)三元表达式和列表解析
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • ***监测系统的构建(chkrootkit )
  • .Mobi域名介绍
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)