javascript - Ruby => Javascript 翻译

标签 javascript ruby deep-copy

很好奇...你会如何用 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/

相关文章:

javascript - updatepanel (JavaScript) 回发后,jQuery 可排序不起作用

java - Java 中的多态复制

类数组内部的C++深拷贝const char *?

ruby - Kernel#gets 尝试读取文件而不是标准输入

ruby - 将 YAML 解析为键值并包含 yaml 类别

ruby-on-rails - 在 Ruby on Rails 中执行每个 Controller 后获取响应状态

go - golang中的深度复制数据结构

javascript - TestCafe - 断言不起作用(测试的对象必须是数组等)

javascript - jQuery——防止用户向上滚动超过一定的滚动高度

javascript - JQuery 预加载器显示和淡出