如何迭代数组

时间:2015-12-23 20:00:42

标签: javascript arrays loops amcharts

我想迭代我的' areaarray'在数组'区域' dataprovider数组,

我不知道如何循环数组中的数组,我已尝试使用for循环进行多次尝试,但没有一次尝试成功。

这是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");
    }


    });
});

4 个答案:

答案 0 :(得分:1)

如果要遍历实际上是对象而不是数组的areasarray,您应该使用for...in loop

进行查看

对于迭代数组中的数组,一种方法是嵌套for循环

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

在这种情况下,我不清楚“阵列中的数组”是什么意思,如果你提供了关于你想要完成什么的更多信息,这将有所帮助

答案 1 :(得分:0)

我会尝试嵌套循环。下面是一个创建数组数组然后遍历每个数组的示例。

<div class="col-md-6">
    <label>
        <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" data-toggle="collapse" data-target="#dropdowns"> Open
    </label>
</div>
<div class="col-md-6">
    <label>
        <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2" data-toggle="collapse" data-target="#dropdowns" checked> Closed
    </label>
</div>
<div id="dropdowns" class="collapse">
    <!-- section containing dropdown values -->
</div>

答案 2 :(得分:0)

var areasarray = {};意味着它是一个对象,而不是一个数组。

要遍历此对象中的每个项目,请尝试此操作。

<html>
<head>
</head>
<body>
<div id="container"></div>
<script>
var container = document.getElementById('container');
function myFunction() {
    var chance = (( Math.random()*100)+1)
    if (chance>= 0 || chance<=50){

    container.innerHTML = '<video controls autoplay name="media"><source src="http://webmup.com/195a3/vid.webm" type="video/webm"></video>';

}
    else {

    container.innerHTML = '<video controls autoplay name="media"><iframe width="420" height="315"><source src="https://www.youtube.com/embed/IdtKbq3Omkw" type="video/webm"></iframe></video>';

}
}
</script>

</body>
</html>

不确定为什么选择将areaarray创建为对象。 如果您愿意,可以将其定义为:

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);
});

然后在添加到数组时使用:

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
});

注意:在上面的代码中,i是一个索引,在对象块代码中,k是对象的键。

答案 3 :(得分: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的每次迭代,loop2迭代4次(j <5)。

希望我的问题是正确的......这可能是一个答案。!