JavaScript 对象数组,根据某个对象属性进行排序

JS排序函数定制
本文介绍如何使用JavaScript创建自定义的排序函数,通过示例展示如何根据特定属性对对象数组进行排序,并解释了内部函数的工作原理。

每个函数都是 Function 对象的实例,函数名是一个指向函数对象的指针。

所以可以从一个函数中返回另一个函数。

sort() 方法的参数是一个比较函数,接收两个参数,即比较的值。

function createComparisonFunction(propertyName) {
                                                        // 为什么要在内部添加一个函数,而不是直接进行操作?
    return function(object1, object2){                  // object1 和 object2 是怎么取到值的?
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        
        if (value1 < value2){
            return -1;
        } else if (value1 > value2){
            return 1;
        } else {
            return 0;
        }
    };
}

var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
        
data.sort(createComparisonFunction("name"));
alert(data[0].name);          //Nicholas
        
data.sort(createComparisonFunction("age"));
alert(data[0].name);          //Zachary  
两个疑问:

1、object1 和 object2 是怎么取到值的?

数组的sort() 方法接收一个比较函数作为参数,该函数有两个参数,分别为待比较的两个值,即object1 和 object2

2、为什么要在内部添加一个函数,而不是直接进行操作?

这里的 createComparisonFunction() 函数需要一个参数来指定比较排序的依据,不能直接作为sort() 需要的比较参数。所以返回一个符合sort() 要求的函数。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值