如果我想对数字对象键进行排序,是否需要parseInt?

时间:2014-10-16 06:04:39

标签: javascript

我需要将对象键排序为整数,它们都是肯定的整数。 (使用如示例中的数字变量设置)。

这不是一个真正的问题,我只是好奇。

var steps = {}
steps[1] = true
steps[9] = true
steps[3+2] = true
steps[40] = true
var unsorted = Object.keys(steps), sorted = unsorted
    .map(function(a){ return parseInt(a) })
    .sort(function(a, b){ return a - b })
console.log(sorted)

上面,我需要mapparseInt这一行吗?如果我注释掉该行,那么的所有内容似乎都就可以了。但我不确定。是否存在使用parseInt可能有所不同的情况?

2 个答案:

答案 0 :(得分:5)

不管你为substraction operator做了什么,你都不需要自己解析数字。来自规范:

  

...
  5.让 lnum 为ToNumber( lval )   6.让 rnum 为ToNumber( rval )。

因此两个操作数都转换为数字类型。

您的代码可以是

var unsorted = Object.keys(steps),
    sorted = unsorted.sort(function(a, b) { return a - b; });

答案 1 :(得分:0)

可以执行以下操作:)

.sort((a, b) => parseInt(a) - parseInt(b))