简体   繁体   中英

How to iterate over an array in an array

I want to iterate over my 'areasarray' in the array 'areas' dataprovider array,

I have no idea how to loop over an array in an array, I've tried several tries with for-loops but none of it succeeded.

this is amCharts Maps framework.

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


    });
});

If you want to iterate over areasarray which is actually an object and not an array you should look into using a for...in loop

For iterating over arrays within arrays, one approach would be to nest for loops

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

It's not clear to me what you mean by "array in an array" in this context and it would help if you provided more information about what exactly you are trying to accomplish

I would try a nested loop. Here is an example of creating an array of arrays and then looping through each.

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


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

var areasarray = {}; means it's an object, not an array.

To iterate through each items in this object, try this.

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

Not sure why you chose to create areasarray as an object. If you wanted to, you could have defined it as:

var areasarray = [];

Then when adding to the array you use:

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

So later on, you can simply do:

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

Note: in the above code, i is an index, where in the object block code, k is a key to the object.

Use nested loops. Example:

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

Sample Output:

1st iteration of loop1:
1abcde
2nd iteration of loop1:
2abcde
and so on...
  • For every iteration of loop1,loop2 iterates 4 times(j<5).

Hoping I got your question right...This could be an answer.!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM