很好奇...你会如何用 JS 编写这个 Ruby?
Array.new(3, Array.new(3, 0))
返回
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
我尝试了很多东西,但它们看起来都很乱。我想有些东西不能像 Ruby 那样干净,但你会如何处理这个问题?
也许我会学习一两个 JS 技巧 ;)
编辑 据透露,这段 Ruby 代码实际上并没有创建 3 个数组。它创建 1 个数组,供其他人引用。这不是本意。我正在寻找一种方法来轻松映射具有 X 元素数量和 JS 嵌套元素 Y 数量的二维数组。
还有...这是一个人为的例子。意图是能够用任何数字代替 3。这只是使用 3 的示例。
最佳答案
你可以这样定义它:
var arr = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];
本质上,您是在明确定义它。但是,此数组包含对三个不同 数组(总共 4 个)的引用。要使其表现得像 ruby,您需要创建一个模仿此行为的函数:
function arr(size, element) {
var ret = [];
for(var i = 0; i < size; i++) {
ret.push(element);
}
return ret;
}
然后你可以这样做:
var myArray = arr(3, arr(3, 0)); //myArray contains [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
这更符合您在 ruby 中看到的行为,因为数组中的每个元素都是对相同 数组的引用(总共只有两个 数组) .您可以通过执行 myArray[0][1] = 2;
然后检查 myArray
来验证这一点。您应该会看到 myArray
中每个数组中的第二个元素都设置为 2。
关于javascript - Ruby => Javascript 翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380181/