在数组中的索引处推送值

时间:2015-02-20 22:32:03

标签: javascript arrays

我将我的数组初始化为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);

代码中有错误。如果这与重复问题类似,我道歉。我在搜索中找不到这个答案。谢谢你的帮助。

3 个答案:

答案 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

JS Fiddle Demo