2017-01-12 13 views
-1

我想調用數組但仍然失敗。 這裏是我JS如何從JavaScript調用數組?

var dataLayer = 
[ 
    { 
     "id" : "993932", 
     "name" : "Foo Bar", 
     "total_price" : "867252", 
     "Recommended" : 
     [ 
      { 
       "hotel_name" : "Four Season", 
       "tripadvisor_ratings" : "5.0" 
      }, 
      { 
       "hotel_name" : "Amaris Hotel", 
       "tripadvisor_ratings" : "5.0" 
      } 
     ]; 

var a = "<div>"+ dataLayer.hotel_name +"</div>" 

,或者你可以檢查https://jsfiddle.net/dedi_wibisono17/7fnzofg1/1/

結果是不確定的。任何人都可以幫助我? 謝謝

+1

你'dataLayer'陣列無效。你錯過了大括號/括號。如果你添加這些,你可以做例如'dataLayer [0] .Recommended [0] .hotel_name' –

+0

我已經「修復」了你的代碼縮進。你現在可以看到自己的問題。 – icecub

+0

嗨@icecub謝謝你,它的工作原理。在我的代碼之前是錯誤的。謝謝 –

回答

3

這裏datalayer是對象的數組,關鍵Recommended也是對象的數組,以便訪問他們,你需要首先選擇在索引的元素。

dataLayer[0]會獲取你的數組中的第一個對象,它是在你的情況下,唯一一個

{ 
     "id" : "993932", 
     "name" : "Foo Bar", 
     "total_price" : "867252", 
     "Recommended" : [ 
     { 
      "hotel_name" : "Four Season", 
      "tripadvisor_ratings" : "5.0" 
     }, 
     { 
      "hotel_name" : "Amaris Hotel", 
      "tripadvisor_ratings" : "5.0" 
     } 
     ] 
    } 

那麼關鍵Recommended也有對象

[ 
    { 
     "hotel_name" : "Four Season", 
     "tripadvisor_ratings" : "5.0" 
    }, 
    { 
     "hotel_name" : "Amaris Hotel", 
     "tripadvisor_ratings" : "5.0" 
    } 
] 

這樣的一個數組,你需要使用索引訪問它們。

dataLayer[0].Recommended[0]將選擇的第一個對象

{ 
    "hotel_name" : "Four Season", 
    "tripadvisor_ratings" : "5.0" 
} 

dataLayer[0].Recommended[0].hotel_name選擇鍵hotel_name

遍歷中建議重點陣列中的所有對象,你可以使用的forEach

dataLayer[0].Recommended.forEach(function(obj){ 
    console.log(obj.hotel_name); 
    }); 

var dataLayer = [ 
 
{ 
 
    "id" : "993932", 
 
    "name" : "Foo Bar", 
 
    "total_price" : "867252", 
 
    "Recommended" : [ 
 
    { 
 
     "hotel_name" : "Four Season", 
 
     "tripadvisor_ratings" : "5.0" 
 
    }, 
 
    { 
 
     "hotel_name" : "Amaris Hotel", 
 
     "tripadvisor_ratings" : "5.0" 
 
    } 
 
    ] 
 
} 
 
]; 
 

 
dataLayer[0].Recommended.forEach(function(obj){ 
 
    console.log(obj.hotel_name); 
 
});

+0

噢謝謝,但是如何打電話給所有酒店的名字?不僅四季 –

+0

你需要遍歷推薦的 –

+0

中的對象數組檢查我更新的代碼 –

0

var dataLayer = [ 
 
{ 
 
    "id" : "993932", 
 
    "name" : "Foo Bar", 
 
    "total_price" : "867252", 
 
    "Recommended" : [ 
 
    { 
 
     "hotel_name" : "Four Season", 
 
     "tripadvisor_ratings" : "5.0" 
 
    }, 
 
    { 
 
     "hotel_name" : "Amaris Hotel", 
 
     "tripadvisor_ratings" : "5.0" 
 
    } 
 
    ] 
 
} 
 
]; 
 
alert(dataLayer[0].Recommended[0].hotel_name); 
 
alert(dataLayer[0].Recommended[1].hotel_name);