如何遍历数组中的数组
How to iterate over an array in an array
我想遍历数组 'areas' dataprovider 数组中的 'areasarray',
我不知道如何在一个数组中循环一个数组,我尝试了几次 for 循环,但 none 成功了。
这是 amCharts 地图框架。
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");
}
});
});
我会尝试嵌套循环。下面是一个创建数组数组然后遍历每个数组的示例。
var matrix = []
matrix[1] = []
matrix[1][1] = "foo"
matrix.forEach(function(column){
column.forEach(function(cell){
console.log(cell);
});
});
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);
});
不确定您为什么选择创建 areasarray 作为对象。
如果您愿意,可以将其定义为:
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);
}
注意:上面代码中,i是索引,其中对象块代码中,k是对象的键。
如果你想遍历 areasarray,它实际上是一个对象而不是一个数组,你应该考虑使用 for...in loop
为了遍历数组中的数组,一种方法是嵌套 for 循环
for(var i = 0; i < array1.length; i++) {
for(var j = 0; j < array2.length; j++) {
// do something
}
}
我不清楚你所说的 "array in an array" 在这种情况下是什么意思,如果你能提供更多关于你到底想完成什么的信息,这会有所帮助
使用嵌套循环。
示例:
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)。
希望我答对了你的问题...这可能是一个答案。!
我想遍历数组 'areas' dataprovider 数组中的 'areasarray',
我不知道如何在一个数组中循环一个数组,我尝试了几次 for 循环,但 none 成功了。
这是 amCharts 地图框架。
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");
}
});
});
我会尝试嵌套循环。下面是一个创建数组数组然后遍历每个数组的示例。
var matrix = []
matrix[1] = []
matrix[1][1] = "foo"
matrix.forEach(function(column){
column.forEach(function(cell){
console.log(cell);
});
});
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);
});
不确定您为什么选择创建 areasarray 作为对象。 如果您愿意,可以将其定义为:
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);
}
注意:上面代码中,i是索引,其中对象块代码中,k是对象的键。
如果你想遍历 areasarray,它实际上是一个对象而不是一个数组,你应该考虑使用 for...in loop
为了遍历数组中的数组,一种方法是嵌套 for 循环
for(var i = 0; i < array1.length; i++) {
for(var j = 0; j < array2.length; j++) {
// do something
}
}
我不清楚你所说的 "array in an array" 在这种情况下是什么意思,如果你能提供更多关于你到底想完成什么的信息,这会有所帮助
使用嵌套循环。 示例:
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)。
希望我答对了你的问题...这可能是一个答案。!