【问题标题】:Javascript array with index and multiple items on it带有索引和多个项目的Javascript数组
【发布时间】:2016-09-24 12:06:01
【问题描述】:

我要做一件奇怪的事情,不知道是否可行。

假设我有一个数组

MasterArray = [1,2,3,4];

现在对于每个 MasterArray 项目我需要进行多次插入,例如在项目 1 下我必须推送 N 值,例如 MasterArray[0] 必须具有这种相关性 5,8,3,9 ...

这适用于 MasterArray 上的任何项目。

我的第一个想法是为每个 MasterArray 项目创建一个新数组,类似于这样

var newobject = X;

for (i = 0; i < MasterArray.length; i++) {
Arr[i] = push the newobject ;
}

但我认为这不是一个好方法!

它的目的是要有一种相关的数组。

MasterArray[0] is correlated to another array [5,8,3,9, ...]
MasterArray[1] is correlated to another array [5,6,7,1, ...]
MasterArray[2] is correlated to another array [7,45,23,2, ...]

等等

我希望自己解释清楚

【问题讨论】:

  • 所以你想制作一个二维数组?
  • 请指定一些输入和想要的输出。你可以看看这里:minimal reproducible example
  • 我不知道是否是二维数组,但第一个数组元素有多个相关的元素
  • 它们如何相互关联?
  • 实际上,当我重新阅读您的问题时,我想您可能只需要一个对象。如果您有一个值数组,例如 [ 1, 2, 3] 并且您希望这些值中的每一个都与数组有关系,那么这几乎就是 { 1: [1, 11, 111], 2: [2, 22, 222], 3: [3, 33, 333]} 的对象 - 它们确实表达了它们的键和与键关联的值。

标签: javascript arrays


【解决方案1】:

用这种方式创建一个二维数组即可:

var myArray = new Array(5); // For example 5;
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = new Array(10);
}

或者,如果您不需要指定任何尺寸:

var myArray = new Array(5); // For example 5;
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = [];
}

编辑:

对于操作,您只需要使用嵌套循环:

for (var i = 0; i < myArray.length; i++) {
   for (var j = 0; i < myArray[i].length; j++) {  
        myArray[i][j] = x; // where x is some variable
}

要在后面添加元素,只需使用.push() 方法:

myArray[0].push(5);

【讨论】:

  • 使用 ES6 更简单:Array(5).fill([])
  • 我知道,因此我指定它是 ES6 - ES6 本身并不在所有地方都受支持。但是,由于它会在(不那么遥远的)未来的某个时刻发生,我认为值得一提。
  • ES6 Array(5).fill([]) 将不起作用,因为 .fill([]) 将使用将相互引用的相同数组填充主数组。
  • @Redu 该死的,你是对的。我认为它会在每个索引中添加一个新索引。
  • @vlaz 在 JS 中实例化一个 ND 数组并不像看起来那么简单。检查this
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多