确定对象属性名称是否为数字

时间:2013-07-30 09:47:53

标签: javascript json coffeescript

拥有具有多个属性属性的Object

{
  ...,
  attributes:{
  [0]: "Capricorn One",
  [1]: "Total Recall",
  "name": "Jerry Goldsmith"
 }
}

我想确定哪些是数字键,哪些不是。

目前我这样做:

for d of data.attributes
  prop =  parseInt(d)
  if !_.isNaN(prop)
    # property is a number

我想知道是否有更好/更有效的方法来做同样的事情?

1 个答案:

答案 0 :(得分:6)

您已经拥有的方法很好,但您可以通过删除parseInt来调整它。 isNaN会为您做到这一点:

for d of data.attributes
  if !_.isNaN(d)
    # property is a number

来自the spec(强调补充):

  

如果参数强制为NaN,则返回true,否则返回false。

     
      
  1. 如果 ToNumber(数字为NaN,则返回true。
  2.   
  3. 否则,返回false。
  4.   

您也可以使用原生isNaN代替Underscore版本,因为d永远不会是undefined

for d of data.attributes
  if !isNaN(d)
    # property is a number