js 彻底搞懂sort方法

arrayObject.sort(sortby);

sortby为一个函数,内有两参数,该函数返回两参数的差。

arr=[1,2,4,5,6]
var sortby=function(a,b){
	return a-b;
}
arr.sort(sortby)


//sort内部采用O(n^2)的冒泡排序,当sortby的返回值大于0,交换位置。

//冒泡排序
//升序
function bubbleSort(arr) {
    var i = arr.length, j;
    var tempExchangVal;
    while (i > 0) {
        for (j = 0; j < i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                tempExchangVal = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tempExchangVal;
            }
        }
        i--;
    }
    return arr;
}

//此时再看
arr=[1,2,4,5,6]
var sortby=function(a,b){
	return a-b; 
	//执行冒泡排序,a为当前元素,b为a的下一个元素。返回值大于0交换。
	//因此返回a-b时为升序,返回b-a时为降序
}
arr.sort(sortby)

下面按照数组中对象的某一个属性值进行排序


var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
];
function compare(property){
    return function(a,b){
        var value1 = a[property]; //a为当前元素
        var value2 = b[property]; //b为a的下一位元素
        return value1 - value2;
    }
}
console.log(arr.sort(compare('age'))) //age依此为 0 8 18
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值