我将我的数组初始化为myArray = [];我想在for循环中动态创建一个关联数组。我正在尝试创建一个键索引并同时推送一个新值。我希望每个键索引都是一个数字 比如'1':'2':'3': 索引的数量是未知的,所以我需要在循环中创建它们 我不知道如何实现这一目标或将更多值推送到每个索引中。我的代码是:
var myArray=[];
for(i=0; i<10; i++){
myArray['1'].push(i);
myArray['2'].push(i);
myArray['3'].push(i);
}
alert(myArray);
代码中有错误。如果这与重复问题类似,我道歉。我在搜索中找不到这个答案。谢谢你的帮助。
答案 0 :(得分:3)
您必须初始化子阵列才能push
。最好从索引0
开始,很难。
var myArray = [[], [], []];
for(var i=0; i<10; i++){
myArray[0].push(i);
myArray[1].push(i);
myArray[2].push(i);
}
答案 1 :(得分:1)
JavaScript数组应与数字索引一起使用。如果您想要从字符串值键映射到值,请使用简单对象:
var myMap = {};
要填充地图,您必须为每个键初始化数组:
var myMap = { '1': [], '2': [], '3': [] };
然后你的循环将按原样运行。
编辑 - 我可能误解了您的问题。如果你希望你的外部数组只使用数字索引(我看到了字符串并且通用,可能不合适),那么你确实可以使用数组数组:
var myMap = [ null, [], [], [] ];
(第一个null
用于索引0,它隐含在JavaScript数组索引的起始位置。)
答案 2 :(得分:0)
这里有几件事是错误的:
<强>#1 强>
你希望myArray
是一个关联数组,所以作为一个对象,它的定义如下:
myArray = {};
<强>#2 强>
您无法在尚未声明的数组中push()
数据。首先声明那些数组:
myArray['1'] = [];
myArray['2'] = [];
myArray['3'] = [];
<强>#3 强>
您无法直接alert()
数组或对象。你需要得到它的字符串表示:
alert( JSON.stringify(myArray,null,4) ); // null,4 provides easy to read formating