2014-03-26 43 views
0
O { 
    k = 57.690636, 
    A = -2.010575000000017, 
    type = 'terrible' 
} 

上述目前有kAkeys如但這些變化週期性。所以我希望有人能幫我解決我的問題。的Javascript選擇前兩個從陣列

我目前只是使用data.kdata.A從數組中獲取值,但是有可能僅選擇前兩個並將它們設置爲變量而不知道鍵名稱?

+0

雖然這不是一個數組。 JavaScript不支持關聯數組。 –

+0

'前兩個'。對象中沒有前兩個,因爲它們基於散列值工作。 – thefourtheye

回答

1

的JSON成員添加到一個數組,然後用它的指標..

var O = { 
    k:57.690636, 
    A:-2.010575000000017, 
    type:'terrible' 
}; 
var index = []; 
for (var x in O) { 
    index.push(O[x]); 
}; 

演示:http://www.bootply.com/124965

0

你可以使用Object.keys(yourObjectHere)得到鍵的排列,而是一個更老的瀏覽器兼容的方法,嘗試:

var keys = [], k; 
for(k in yourObjectHere) keys.push(k); 

您也可以打破你的循環,一旦你擁有前兩個if你喜歡。

但是你選擇這樣做,你現在可以訪問yourObjectHere[keys[0]]yourObjectHere[keys[1]]

0

規範未定義JavaScript對象的屬性順序。這意味着根據實現,鍵可以以任何順序返回,所以它們的前兩個鍵可以是對象中的任意兩個鍵。

for..in

的力學和列舉的屬性順序(在第一算法步驟6.A,在第二步驟7.A)沒有被指定。

Object.keys

如果一個實現定義枚舉爲換在聲明,相同的枚舉順序必須在該算法的步驟5中所使用的特定的順序。

最好的辦法是穩定這些對象的來源,以便始終使用相同的鍵值返回有價值的信息。


隨機猜測是你使用了一些減少密鑰長度的縮小器。也許不是做

var returnedObject = { 
    lat : '123', 
    long : '456'; 
} 

你可以這樣做:

var returnedObject = {}; 
returnedObject['lat'] = '123'; 
returnedObject['long'] = '456'; 

這應該防止微小更改您的鍵名。如果你使用外部服務,你應該問自己,如果這是真實的公開(意味着你想要使用的數據)數據,如果不是,公共選擇是什麼。

1

雖然不是最好的方法,但以下工作假設您正在尋找的屬性是類型編號。

var obj = { 
    k : 57.690636, 
    A : -2.010575000000017, 
    type : 'terrible' 
}; 


for (attr in obj) 
{ 
if (typeof obj[attr] === 'number') 
{ 
console.log(obj[attr]); 
} 
}