2013-07-30 61 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

相關問題