JavaScript實現對象數組按不同字段排序

       假設有一個對象數組,我們想要根據某個對象屬性對數組進行排序,而傳遞給數組sort()方法的比較函數要接收兩個參數,即要比較的值。可是,我們需要一種方式來指明按照哪個屬性來排序。要解決這個問題,可以定義一個函數,它接收一個屬性名,然後根據這個屬性名來創建一個比較函數,下面就是這個函數的定義。
function createComparionFun(propertyName)
{
    return function(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:"zom",age:18},{name:"nbd",age:20}];
data.sort(creatComparionFun("name"));
alert(data[0].name);//nbd
data.sort(creatComparionFun("age"));
alert(data[0].name);//zom
這樣就實現了按不同屬性進行排序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章