根据对象属性值排序对四位数不生效

<script>
    let arr = {1: "3", 247: "1205", 360: "1582", 414: "0", 709: "512"}
    let keysSorted = Object.keys(arr).sort(function(a,b){
      return arr[a] - arr[b];
    });
    console.log("key",keysSorted)
    let normalArr = []
    for(let key in arr){
      normalArr.push(arr[key])
    }
    let sortArr = normalArr.sort();
    console.log("value", sortArr)
</script>

如果全是小于四位数方法是正确的
返回的结果是
["key", "414","1","709","247","360"]
["value", "0","1205","1582","3","512"]
???

阅读 2k
2 个回答

sort方法默认排序按顺序逐个比较字符 ascii 码大小,所以第一个字母 3 的永远会排在 1 的后面,你要添加自定义排序方法。

let sortArr = normalArr.sort(function(a, b){
    return a - b;
});

你前面三位数的自定义了sort,后面的使用了默认的sort,所以效果不同

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题