2013-07-30 37 views
1

具有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

注意,对...的表达是实验性的,它可能改变其将来的语法或行为。 compability是有限的,在这里阅读更多:[developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of?redirectlocale=en -US&redirectslug = JavaScript%2FReference%2FStatements%2Ffor ...) – estrar

+0

@estrar谢谢指出 – TMichel

+0

@estrar不,它不是。这是'...'的CoffeeScript,它编译为javascript in ... in。 –

回答

6

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

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

the spec(强调):

返回true,如果参数要挟为NaN,否则,返回假。

  1. 如果ToNumber(是NaN,返回true。
  2. 否则,返回false。

你也可以使用本机isNaN,而不是下划线的版本,因为d是永远不会是undefined

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

如何在3分钟内写出如此有用的回答? :) – TMichel

相关问题