Array.sort不会使用对象中的NaN值对数组重新排序

时间:2018-10-26 08:00:46

标签: javascript arrays sorting

我有一个简单的例子,其中对每个minLVL的prop object进行数组中的项目重新排序。

但是出于某种原因,它仅在存在上一个和下一个道具时才起作用(如您所见,每个object都不需要minLVL字段)。因此,如果minLVL在某些对象中丢失,则不会将该项目拖到列表的底部,而是停留在相同的位置。

我该如何解决?谢谢

示例:

 var h = [
        {
            ID: 172
    	},
        {
            ID: 179,
            minLVL: "30"
    	},
        {
            ID: 169
    	},
        {
            ID: 173
    	},
        {
            ID: 167,
            minLVL: "25"
    	},
        {
    		ID: 175,
            minLVL: "10"
    	}
    ]
    
          var n = h.sort((a, b) => Number(b.minLVL) - Number(a.minLVL))
    
    console.log(n)

1 个答案:

答案 0 :(得分:1)

如果排序功能中不存在0,则可以将这些值默认为:

var h = [{
  ID: 172
}, {
  ID: 179,
  minCrimeLevel: "30"
}, {
  ID: 169
}, {
  ID: 173
}, {
  ID: 167,
  minCrimeLevel: "25"
}, {
  ID: 175,
  minCrimeLevel: "10"
}]

var n = h.sort((a, b) => (Number(b.minCrimeLevel) || 0) - (Number(a.minCrimeLevel)|| 0))

console.log(n)