• JS中对象数组根据某属性sort排序


    对数组进行排序,可以用sort()方法,按照数组中元素的首字母或者数字大小进行排序:

    var arr = [2,5,13,7,4,9,1];
    
    //默认排序按照字符编码排序
    arr.sort();      
    console.log(arr);   //[1, 13, 2, 4, 5, 7, 9]
    
    //如果想对数组按照大小进行排序,则需传入参数(比较函数)
    //升序排列
    arr.sort((a,b)=>{
        return a-b;     //返回值结果大于0,两数交换顺序
    })
    console.log(arr);   //[1, 2, 4, 5, 7, 9, 13]
    
    //降序排列
    arr.sort((a,b)=>{
        return b-a;     //返回值结果大于0,两数交换顺序
    })
    console.log(arr);   //[13, 9, 7, 5, 4, 2, 1]
    
    

    比较函数compare返回值特点:
    返回值大于0,两数交换顺序;
    返回值小于等于0,两数位置不变;
    以上规则得出的排序结果是升序的,如果想要得到降序的结果,则在比较结果大于0时返回小于0的结果,比较结果小于0时返回大于0的结果即可。

    对象数组如何根据某个属性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;  
            }  
        }  
    }  
    
  • 相关阅读:
    关于pandas里面的合并
    关于动态规划的一丢丢研究
    结巴分词详细讲解
    k折交叉验证
    Boosting和Bagging的异同
    批量归一化的原理
    深度学习模型参数初始化的方法
    NLP 装桶(Bucketing)和填充(padding)
    facebook 摘要生成阅读笔记(二) Abstractive Sentence Summarization with Attentive Recurrent Neural Networks
    facebook 摘要生成阅读笔记(一) A Neural Attention Model for Sentence Summarization
  • 原文地址:https://www.cnblogs.com/VitoYi/p/8111233.html
Copyright © 2020-2023  润新知