js中sort的使用(一)

最近寫遊戲,須要作一個列表的道具領取功能,當你的等級到達必定的程度,就能領取道具,當道具領取後,須要把已領取的項,放到最後面。
相似於:(value =1說明已領取)segmentfault

let arr = [
        {id:"1",name:"a",value:1},
        {id:"2",name:"b",value:1},
        {id:"3",name:"c",value:0},
        {id:"4",name:"d",value:0},
        {id:"5",name:"e",value:1},
        {id:"5",name:"f",value:1},
        {id:"7",name:"g",value:1},
        {id:"8",name:"h",value:0},
        {id:"9",name:"i",value:0},
        {id:"10",name:"j",value:0}
    ];

咱們須要的結果爲: 3,4,8,9,10,1,2,5,6,7 。這是咱們須要的排序後結果。
可是,一開始我想的不是sort方法排序,個人想法是,只要把value = 1的項放到數組的最後面,不就行了嗎?
因此,我就寫了下面代碼:數組

let num:number = 0;
for(let i = 0,l = arr.length; i < l;i++){
    if(arr[i].value == 1){
      let str = arr.splice(i,1);
      arr.unshift(str[0]);
      arr.push(str[0]);
      num ++;
          }
}
arr.splice(0,num);

可是我以爲這樣寫可能不大好,建議你們也不要這樣寫。因此就尋求另外一種解決方式,就用到了sort排序。
首先咱們先看看簡單點的排序:code

let arr1 = [15,10,2,1,9,23,50,80,4,8,32]
arr1.sort((a,b)=>{
    if(a>b) {
        return 1
    }
    else if(a<b) {
        return -1
    }
    return 0
    })

這樣能使用咱們的arr1進行一個升序的排序,
若是 a 大於 b,排序後 a 在 b 後面,此時 return 1;
若是 a 小於 b,排序後 a 在 b 前面,此時 return -1。
因此咱們的arr排序能夠這樣寫:排序

arr.sort((a,b)=>{
      if(a.value == 1 && b.value != 1) {
          return 1
      }
      else if(a.value != 1 && b.value == 1) {
          return -1
      }
      return 0
})

此外還有一種狀況,下章再說。
js中sort的使用(二)遊戲

相關文章
相關標籤/搜索