【问题标题】:Create Array of arrays in Javascript在Javascript中创建数组数组
【发布时间】:2013-06-24 19:32:40
【问题描述】:

在 Ruby 中,您可以通过执行以下操作来创建一个数组数组(可以表示一个网格)

@grid = Array.new(num_rows) {Array.new(num_columns)}

是否有 Javascript 的等价物?

或者您是否需要创建第一个数组并对其进行迭代,在每个索引处显式创建一个新数组?

例如

this.grid = new Array(this.numRows);
for (var i = 0; i < this.numRows; i++) {
  this.grid[i] = new Array(this.numColumns);
}

我正在使用Underscore.js,所以如果需要可以利用它的方法

【问题讨论】:

  • 喜欢array=[[], [], []]?
  • for 循环将是您最好的选择。
  • 是的,我可以看到如何使用 for 循环来做到这一点,我只是认为必须有一种更简洁的方法,尤其是当我引用下划线时
  • 制作自己的构造函数来创建数组数组并不需要太多。是的,构造函数将使用循环,但您只需编写一次循环。
  • Ruby 是一种极具表现力而又简洁的语言。寻找用另一种语言编写几乎所有 Ruby 习语的等效方法将是一个令人沮丧的搜索。

标签: javascript ruby arrays underscore.js


【解决方案1】:

下划线可能会更好,但以下内容会起作用。我使用 3 和 4 是因为高度/宽度只是为了让我可以在 fiddle 中看到结果。

array = _.map(_.range(3), function(){return _.range(4)});

您可能需要添加下划线标签,以便让一些下划线关注问题。

【讨论】:

  • _.range 已经返回一个数组,不需要调用_.toArray。该函数应该返回Array(4),而不是_.range(4)
  • 不错!这就说得通了。将保持此开放状态,看看是否有任何其他建议
【解决方案2】:

在 JavaScript 中,您可以在数组的不同元素上拥有不同的对象。就这么简单

var myArray = new Array()
myArray[0] = new Array()

您可以根据需要多次设置要创建的 2D 空间的大小。如果您的空间很大,请使用循环来设置它们。我不知道您想要数组中的哪些对象,或者我会更具体。

访问这个结构就像使用任何其他语言一样容易:myArray[58][12]

This question 也是相关的。

【讨论】:

  • 谢谢 - 假设我想要一个 25*50 的网格;我不想使用您的语法来新建所有这些数组。同样,我意识到我可以遍历初始数组(如问题中所述)。我要问的是是否有更简洁的语法,尤其是当我引用下划线时
  • 是的,你可以打电话给new Array(25),我只是用谷歌搜索了它,但是我找不到快速的二维数组创建构造函数或简单的语法,对此@ChrisCa 感到抱歉
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 2018-07-09
  • 2019-07-18
相关资源
最近更新 更多