1. 程式人生 > >JS物件陣列根據屬性排序

JS物件陣列根據屬性排序

在專案中需要給grid的某一列排序,但又不是miniui那樣的人為的操作,本來是想用冒泡來排下序就行了,結果發現事情沒有這麼簡單,當然也沒有那麼複雜,之前轉的一篇文章中,介紹了很多js陣列的方法,今天就用到了sort()方法。

sort()方法會改變原來的陣列,並且sort方法並不是嚴格按照數字大小排序的,好像是根據字元的阿斯科碼錶對應值排序的。如果想對陣列按照大小進行排序,則需要在sort()方法新增比較函式。

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]; 
    var value2 = b[property]; 
    return value1 - value2; 
        } 
    }

 console.log(arr.sort(compare('age')))

如何根據引數不同,來確定是升序排列,還是降序排序呢?

/**陣列根據陣列物件中的某個屬性值進行排序的方法 
     * 使用例子:newArray.sort(sortBy('number',false)) //表示根據number屬性降序排列;若第二個引數不傳遞,預設表示升序排序
     * @param attr 排序的屬性 如number屬性
     * @param rev true表示升序排列,false降序排序
     * */
    sortBy: function(attr,rev){
        //第二個引數沒有傳遞 預設升序排列
        if(rev ==  undefined){
            rev = 1;
        }else{
            rev = (rev) ? 1 : -1;
        }
        
        return function(a,b){
            a = a[attr];
            b = b[attr];
            if(a < b){
                return rev * -1;
            }
            if(a > b){
                return rev * 1;
            }
            return 0;
        }

相關推薦

JS物件陣列根據屬性排序

在專案中需要給grid的某一列排序,但又不是miniui那樣的人為的操作,本來是想用冒泡來排下序就行了,結果發現事情沒有這麼簡單,當然也沒有那麼複雜,之前轉的一篇文章中,介紹了很多js陣列的方法,今天就用到了sort()方法。 sort()方法會改變原來的陣列,並且sort

js物件排序物件陣列根據屬性排序物件生成類url字串

工作中經常會遇到物件屬性排序的問題,在加密中,根據屬性名自然排序,然後拼接成字串加密,也是很常見的需求,接下來給大家帶來一些基本方法: 1.首先是根據首字元自然排序: const obj = {cc:'',dd:'dd',ff:'ff',aa:'aa',bb:'bb'} //屬性隨機排列的物

js 物件陣列新增屬性、修改屬性

var kvArray = [{key: 1, value: 10}, {key: 2, value: 20}, {key: 3, value: 30}]; var reformattedArray = kvAr

js物件陣列 根據某個共同欄位 分組

[ {"id":"1001","name":"值1","value":"111"}, {"id":"1001","name":"值1","value":"11111"}, {"id":"1002","name":"值2","value":"25462

JavaScript物件陣列根據屬性sort升降序排序

1、自定義一個比較器,其引數為待排序的屬性。 2、將帶引數的比較器傳入sort()。 var data = [    {name: "Bruce", age: 23, id: 16, score: 80},    {name: "Alice", age: 24, id: 12, score: 90},   

如何根據List中 物件的某一屬性排序,比如按照學生物件的年齡屬性排序。|Collections.max()|Collections.sort()

本文目錄 1.List相關 List 是有序的,即按照元素的新增順序排列的,如ArrayList、LinkedList。 List是可重複的,即能存入多條完全一樣的資料或物件。 2.如何取List中(基本型別)的最大值

JAVA list 根據物件的某個屬性排序

//需要排序的list List<T> list= new ArrayList<>(); //開始排序 Collections.sort(list, new Comparator<T>(){ public int compare(T o1,

js物件陣列排序,name字串排序,數字最前,然後英文,然後中文

/** * 將傳入的陣列根據當前系統語言,按照中文或英文名重新排序,會影響原陣列 * @param list 必填要排序的list * @returns {*} */ export function arraySortByName(list) { if (list === undefin

List集合中的物件根據屬性排序

集合類List存放的資料,預設是按照放入時的順序存放的,比如依次放入A、B、C,則取得時候,則也是A、B、C的順序,實際場景中,有時我們需要根據自定義的規則對List中的元素進行排序,該如何實現呢?看

java 物件String型別屬性排序

方法一:內部類實現comparator介面 程式碼演示 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; class B{ String name; String da

js物件陣列分組

var arr = [      { "id" : "1001" , "name" : "值1" , "value" : "111" },  &nb

js物件動態新增屬性,方法

1. 動態新增屬性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>>{name: "name", age: 19} object.fun = function(){   console

JS物件陣列的深度拷貝

直接=是淺拷貝,對於想完全複製可以這樣: 途徑1  let arrObj2=JSON.parse(JSON.stringify(arrObj1)); 途徑2  var objDeepCopy = function (source) {     var sourceCop

vue 爬坑 之js 物件/陣列 賦值/拷貝 解決VUE中賦值引用後資料雙向改變的問題

淺拷貝這裡就不講了,我們直接講深拷貝 正常的陣列/物件拷貝可以直接用 const cloneObj = JSON.parse(JSON.stringify(Obj)); 這種方式可以解決相當多一部分的賦值問題,但是一些特殊屬性除外(undefined/function)

Java自定義物件陣列、集合排序

//實體類: package CategoryDp2; import java.util.Comparator; public class Cat implements Comparator<Cat>,Comparable<Cat>{private

後臺map 轉為json 傳到前臺 構建js物件陣列

後臺java程式碼 Map listMap = new HashMap(); listMap.put("10", "熱賣商品"); listMap.put("11", "限時搶購"); JsonConfig config = new JsonConfig(); String

js陣列反向、排序reverse、sort

全棧工程師開發手冊 (作者:欒鵬) js中陣列反向、排序 陣列反向使用reverse函式,陣列排序使用sort函式,排序函式可以傳入比較函式,也可以修改陣列圓形,自定義新增排序函式 程

一行程式碼完成js物件陣列的深拷貝

1、對於普通陣列(陣列元素為數字或者字串),深拷貝很簡單,拷貝之後兩個陣列指標指向的儲存地址不同,從而完成深拷貝 var _test = [1,2,3];//原陣列 var _testCopy = [].concat(_test);//拷貝陣列 _testCopy[0]=4

js 物件動態新增屬性、合併屬性

1、物件合併: var obj = {a:1, name: 'test'}; var shuxing = {name:"super",sex:"19",work:"IT"}; for(var r in

js陣列(Array)的排序(sort)注意事項

var arrDemo = new Array(); arrDemo[0] = 10; arrDemo[1] = 50; arrDemo[2] = 51; arrDemo[3] = 100; arrDemo.sort(); //呼叫sort方法後,陣列本身會被