2015-12-23 53 views
0

我想遍歷我的「areasarray」陣列中「區域」 dataProvider Array中,如何遍歷一個數組的數組

我不知道如何循環數組的數組,我我嘗試了幾次使用for-loops的嘗試,但都沒有成功。

這是amCharts Maps框架。

var areasarray = {}; 
//get JSON File 
$(function getData() { 
var url = "../assets/document.json"; 
$.ajax({ 
    url: url, 
    dataType: 'json', 
    success: function (data) { 
     console.log(data); 
     for (var i = 0; i < data.fact.length; i++) { 
      if (inverseCountryCodes[data.fact[i].dims.COUNTRY] != null) { 

       areasarray[i] = { 
        "id": inverseCountryCodes[data.fact[i].dims.COUNTRY], 
        "value": data.fact[i].Value, 
        "info": "Verkeersdoden per 100 000 inwoners: " + data.fact[i].Value 
       } 

      } 

     } 
     //console.log(areasarray); 

     //Map initialiseren 
     var map; 
     map = new AmCharts.AmMap(); 
     map.colorSteps = 20; 

     var dataProvider = 
     { 
      mapVar: AmCharts.maps.worldLow 
      areas: [ 
       { 
        id: "BE", 
        value: 10, 
        info: "Verkeersdoden ..." 
       } 

      ] 
     }; 

     console.log(dataProvider); 
     map.areasSettings = { 
      autoZoom: true, 
      selectedColor: "#338DAB" 
     }; 
     map.dataProvider = dataProvider; 
     var valueLegend = new AmCharts.ValueLegend(); 
     valueLegend.right = 10; 
     valueLegend.minValue = "little"; 
     valueLegend.maxValue = "a lot!"; 
     map.valueLegend = valueLegend; 

     map.addListener("clickMapObject", function (event) { 
      document.getElementById("info").innerHTML = '<p><b>' + event.mapObject.title + '</b></p><p>' + event.mapObject.info + '</p>'; 
     }); 

     map.mouseWheelZoomEnabled = true; 
     map.write("mapdiv"); 
    } 


    }); 
}); 
+0

好吧,如果'areasarray'是一個數組,不要將它定義爲一個對象。 – Andy

+0

我從周圍亂糟糟的,有點搞砸了這裏 – Robki

回答

1

如果你想遍歷areasarray這實際上是一個對象,而不是一個數組,你應該考慮使用一個for...in loop

用於遍歷數組內的數組,一個辦法是巢循環

for(var i = 0; i < array1.length; i++) { 
    for(var j = 0; j < array2.length; j++) { 
     // do something 
    } 
} 

這不是我清楚你在這種情況下「在一個陣列陣列」的意思,如果你提供的關於正是你所要完成

+0

這對我來說確實有點不好,我只是想把它弄對。我將其定義回數組。 我想從數據提供者的區域數組中的areaarray獲得所有數據,就像我輸入的一個示例。如果我在那裏使用for循環,它總會給出錯誤。 – Robki

+0

如果您只是想將'dataprovider.areas'的值設置爲'areasarray',那麼您可以將其分配爲'var dataprovider = {areas:areasarray}'。這是你的意思嗎? –

+0

這確實有效,它以前沒有奏效,因爲我宣稱它是一個對象。謝謝! – Robki

0

我會嘗試一個嵌套循環。這裏是創建一個數組數組然後循環遍歷每個數組的示例。

var matrix = [] 
matrix[1] = [] 
matrix[1][1] = "foo" 


matrix.forEach(function(column){ 
    column.forEach(function(cell){ 
     console.log(cell); 
    }); 
}); 
0

var areasarray = {};意味着它是一個對象,而不是數組。

要遍歷此對象中的每個項目,請嘗試此操作。

var keys = Object.keys(areasarray); 
keys.forEach(function(k) { 

    // you can access your item using 
    // k is the property key 
    console.log(areasarray[k]); 
    console.log(areasarray[k].id); 
    console.log(areasarray[k].value); 
    console.log(areasarray[k].info); 
}); 

不確定爲什麼選擇創建areaarray作爲對象。添加到您使用數組時

var areasarray = []; 

然後: 如果你想,你可能把它定義爲

areasarray.push({ 
    "id": inverseCountryCodes[data.fact[i].dims.COUNTRY], 
    "value": data.fact[i].Value, 
    "info": "Verkeersdoden per 100 000 inwoners: " + data.fact[i].Value 
}); 

所以後來,你可以簡單地做:

for (var i = 0; i < areasarray.length; i++) { 
    console.log(areasarray[i]); 
    console.log(areasarray[i].id); 
    console.log(areasarray[i].value); 
    console.log(areasarray[i].info); 
} 

注意:在上面的代碼中,我是一個索引,其中在對象塊代碼中,k是對象的關鍵。

0

使用嵌套循環的詳細信息,這將有助於。 實施例:

var a1=["1","2","3","4","5","6","7"]; 
var a2=["a","b","c","d","e"]; 
for(var i=0;i<a1.length;i++) //loop1 
{ 
console.log(a1[i]); 
for(var j=0;j<a2.length;j++) //loop2 
{ 
console.log(a2[j]); 
} 
} 

樣本輸出:

1st iteration of loop1: 
1abcde 
2nd iteration of loop1: 
2abcde 
and so on... 
  • 對於LOOP1的每次迭代,循環2迭代4次(j < 5)。

希望我的問題得到解決......這可能是一個答案。