JavaScript对象数组根据某属性sort升降序排序
1、自定义一个比较器,其参数为待排序的属性。
2、将带参数的比较器传入sort()。
var data = [
    {name: "Bruce", age: 23, id: 16, score: 80},
    {name: "Alice", age: 24, id: 12, score: 90},
    {name: "David", age: 21, id: 11, score: 70},
    {name: "Cindy", age: 22, id: 10, score: 100},
];
data.sort(compareUp("age"));
data.sort(compareDown("age"));
function compareUp(propertyName) { // 升序排序
        if ((typeof data[0][propertyName]) != "number") { // 属性值为非数字
              return function(object1, object2) {
                  var value1 = object1[propertyName];
                  var value2 = object2[propertyName];
                 return value1.localeCompare(value2);
             }
       } else {
            return function(object1, object2) { // 属性值为数字
                  var value1 = object1[propertyName];
                  var value2 = object2[propertyName];
                 return value1 - value2;
             }
       }
}
function compareDown(propertyName) { // 降序排序
       if ((typeof data[0][propertyName]) != "number") { // 属性值为非数字
           return function(object1, object2) {
                var value1 = object1[propertyName];
                var value2 = object2[propertyName];
                return value2.localeCompare(value1);
           }
   } else {
        return function(object1, object2) { // 属性值为数字
              var value1 = object1[propertyName];
              var value2 = object2[propertyName];
              return value2 - value1;
        }
    }
}
JavaScript对象数组根据某属性sort升降序排序的更多相关文章
- 浅谈JavaScript对象数组根据某属性sort升降序排序
		
1.自定义一个比较器,其参数为待排序的属性. 2.将带参数的比较器传入sort(). var data = [ {name: "Bruce", age: 23, id: 16, s ...
 - 对JavaScript对象数组按指定属性和排序方向进行排序
		
引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数 ...
 - Javascript 对象 - 数组对象
		
JavaScript核心对象 数组对象Array 字符串对象String 日期对象Date 数学对象Math 数组对象 数组对象是用来在单一的变量名中存储一系列的值.数组是在编程语言中经常使用的一种数 ...
 - 让操作javascript对象数组像.net lamda表达式一样
		
让操作javascript对象数组像.net lamda表达式一样 随着web应用程序的富客户端化.ajax的广泛使用及复杂的前端业务逻辑.对js对象数组.json数组的各种操作越来越多.越来越复杂. ...
 - js 实现table表格拖拽和点击表头升降序排序
		
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
 - JavaScript中对象数组 根据某个属性值 然后push到新的数组
		
原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...
 - 深入理解javascript对象系列第二篇——属性操作
		
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
 - JavaScript中数组类型的属性和方法
		
除了Object,Array类型应该是ECMAScript中最常用的类型了. ECMAScript的数组虽然也是数据的有序列表,但还是与其他语言中的数组有很大的区别.比如ECMAScript数组每一项 ...
 - JavaScript对象的两类属性(数据属性与访问器属性)
		
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性 (property). 第一类属性数据属性具有四个特征. value:就是属性的 ...
 
随机推荐
- datetime模块+calendar模块
			
datetime: """ 模块中的类: datatime 同时有时间和日期 timedelta 主要用于计算时间的跨度 tzinfo 时区相关 time 只关注时间 d ...
 - js原型链结构与链表结构对比
			
在结构上多一个指向自身的constructor构造函数,这就是原型链够简单吧. 利用原型链结构实现继承和向链表中插入节点,有区别吗? 没区别!!
 - #WEB安全基础 : HTML/CSS | 0x1初识CSS
			
"我受够这些难看的网页了,我怎么才能让它变得好看点?"你说. 我答道:"看来你得学点CSS了" 学习这些东西只有一个原则,就是用你的脑袋想,用你的眼睛看,用的你 ...
 - C#反射、方法调用、自动调用方法、根据按钮名称调用方法、C#按钮权限管理
			
根据按钮名称,直接调用方法,适用于用户对按钮的操作权限管理. /// <summary> /// 菜单按钮点击事件 /// </summary> void usrMenu1_U ...
 - angular bootstrap timepicker     TypeError: Cannot set property '$render' of undefined
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - python之把字符串形式的函数编译执行
			
实现效果:执行字符串形式的函数 代码如下 # name = 'aaa' # data = [18,32,33] # def hellocute(): # return "name %s ,a ...
 - 小tips:JS之break,continue和return这三个语句的用法
			
break语句 break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句.由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是 ...
 - 移动前端—H5实现图片先压缩再上传
			
在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上 ...
 - django模型基础(三)
			
本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...
 - 【20190226】JavaScript-知识点记录:dom0级事件,dom2级事件
			
DOM0级事件处理程序: 通过将元素的事件处理程序属性(如onclick)的值设置为一个函数来指定事件处理程序的方法称为DOM0级方法,它被认为是元素的方法,这时候的事件处理程序是在元素的作用域中运行 ...