异体'
我正在研究我的一个小项目,其中一部分涉及采用已创建的二维数组并将其随机化。
所以我有一些看起来像这样的东西:
foo = [[1,2],[3,4],[5,6],[7,8]];
randomizeFoo = function(){
var randomizedFoo = [];
newFoo = foo;
for(i = 0; i < newFoo.length; i++){
count = Math.random() * newFoo.length;
randomizedFoo.push(newFoo.slice(count, count + 1));
}
return randomizedFoo;
};
这确实使数组随机化,但最终得到的结果如下:
randomizedFoo = [[[7,8]],[[1,2]],[[5,6]],[[3,4]]]
我漂亮的整洁2D阵列现在是一个3D阵列,最低级别的阵列现在在额外的级别下磨损。我意识到这不是什么大不了的事,其余的代码只需要补偿,但它有两个原因让我烦恼:
任何人都有任何想法为什么这样做?我放了一个2D数组,我想要再次退出2D数组。
答案 0 :(得分:0)
您可以从this answer获取脚本并使用map
:
foo = range(0, foo.length-1, true).map(function(i) {
return foo[i];
});
演示: http://jsbin.com/ayepeh/1/edit(按住Ctrl键进入刷新状态)
答案 1 :(得分:0)
这是因为你正在使用切片。只需使用count作为foo的索引。如:randomizedFoo.push(foo [count]);
确保先计算一个int。