2017-02-14 59 views
2

我有鑰匙陣列,可能是無論是實際的字符串檢查數組鍵是數字

var array = { 
    'Blue' : 1, 
    'Red' : 2, 
    'Green': 3 
} 

,或者它可以是數字,但有時彩車視爲字符串,我猜是因爲它不是一個數組,但一個對象:

var array = { 
    9  : 1, 
    '9.5' : 2, 
    10 : 3 
    '10.5': 4 
} 

這個人是不是一個真正的數組,所以我需要在明確排序呢,如果我想保持原來的順序:

$.each(Object.keys(array).sort(function(a, b) { 
    var anum = parseFloat(a), 
     bnum = parseFloat(b); 
    return anum - bnum; 
}), function(index, value) { 
    …… 
}); 

,如果我不這樣做,我的數組是:

var array = { 
    9  : 1, 
    10 : 3, 
    '9.5' : 2 
    '10.5': 4 
} 

我需要保持它排序。我的解決方案運行良好,但我需要檢查鍵是數字還是字符串。如果它們是字符串,我不需要對數組進行排序。喜歡的東西:

$.each(/*if my array has numbers as keys I sort the array as above, else just loop*/, 
function(index, value) { 
    …… 
}); 
+0

您可以使用'''typeof運算指數=== 「字符串」''' –

+0

你不能。 [這是原因和討論](http://stackoverflow.com/questions/3633362/is-there-anyway-to-use-a-numeric-type-as-an-object-key) –

+1

對象不必須保持物業的秩序! –

回答

5

確實不應該調用該對象 '數組',而是:

if(Object.keys(array).every(key => !isNaN(key)){ //sort } 
+2

在上下文中:https://jsfiddle.net/ba55pkuh/ – blex