js中sort的运用(一)

近来写游戏,须要做一个列表的道具领取功用,当你的品级抵达肯定的水平,就能够领取道具,当道具领取后,须要把已领取的项,放到最背面。
类似于:(value =1申明已领取)

    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排序。
起首我们先看看简单点的排序:

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的运用(二)

    原文作者:oo大楠oo
    原文地址: https://segmentfault.com/a/1190000018868780
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞