2016-03-02 54 views
-1

我有對象的數組,基本上看起來像這樣console.log(array)後:充分利用JavaScript的數組特定對象的名字對象

[Fruits,Vegetables] 
    0 : Fruits 
     apple : red 
     banana: yellow 
    1 : Vegetables 
     tomato: red 

我需要檢查陣列,看看是否索引是一種水果或蔬菜但是當我嘗試array[0]我得到的對象本身,而不是「水果」。

我知道我可以通過撥打array[0].banana並通過撥打Object.keys(array[0])獲得「蘋果」和「香蕉」來達到「黃色」,但我不知道如何去「水果」。此外,我只能訪問該對象,而不是該對象的製作位置,如果這樣做有任何區別的話。

編輯/注: 對於那些誰問,我沒有訪問JavaScript對象代碼本身,因爲這實際上是與真實的數據規模較大被添加到該對象在幾個地方動態完成。我所能做的就是調用這個對象。我對這種含糊之處表示歉意。

謝謝所有回覆的人,儘管沒有提出的解決方案奏效,但我最終使用了對象中的一個屬性來區分水果和蔬菜。

+1

看起來你正在尋找物體的原型。你有沒有嘗試過'Object.getPrototypeOf(array [0])'? – cl3m

+0

'if(array.indefOf(Fruits)> -1)console.log(array [array.indeOf(Fruits)])'有幫助嗎? –

+1

請顯示您的數據的實際JavaScript對象表示。 – 2016-03-02 19:35:57

回答

0

爲重點,你需要訪問Object.keys結果的結果:

Object.keys(array[0])[0] 

var array = [{ Fruits: { apple: 'red', banana: 'yellow' } }, { Vegetables: { tomato: 'red' } }]; 
 
\t 
 
document.write('<pre>' + JSON.stringify(Object.keys(array[0])[0], 0, 4)+ '</pre>'); 
 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

+0

「水果」和「蔬菜」不是對象的關鍵 – Andreas

+0

嗯,對象不見了,我只能猜測。 –

0

你能告訴我們的代碼本身(而不是控制檯日誌)?我不確定你的要求是什麼,但你可以使用一個對象來代替水果和蔬菜的數組作爲關鍵。考慮以下幾點:

var object = { 
    fruits:[ 
     { 
      apple: 'red' 
     } 
    ] 
}; 

如果你從一個數組這兩者的組合,你可以做這樣的事情,而不是尋找抽象類型:

var array = [ 
    { 
     color: 'red', 
     name: 'apple', 
     type: 'fruit' 
    } 
] 

我希望這有助於!

0
// For getting all the keys and value of a json object 

for (var key in array) { 
    if (array.hasOwnProperty(key)) { 
     var val = array[key]; 
     var e = array[key]; 
     console.log(key+" : "+val); 
     } 
    for (var key in e) { 
     if (e.hasOwnProperty(key)) { 
      var val = e[key]; 
      console.log(key+" : "+val); 
     } 
    } 
} 

試試上面的代碼,如果你正在尋找一個對象水果,你可以相應地添加條件。希望能幫助到你。

+0

謝謝,這幫助我找到了解決問題的另一種方式,儘管不是我想要的方式。 – csmh3630