在Python中,[2]是一个列表,以下代码给出以下输出:
[2] * 5 # Outputs: [2,2,2,2,2]
是否存在一种简单的方法来做到这一点与JavaScript数组?
我写了下面的函数来实现它,但是有没有更短或更好的函数呢?
var repeatelem = function(elem, n){
// returns an array with element elem repeated n times.
var arr = [];
for (var i = 0; i <= n; i++) {
arr = arr.concat(elem);
};
return arr;
};
我今天在尝试制作一个不使用循环的2D数组时发现了这一点。回想起来,加入一个新数组很简单;我尝试映射一个新数组,这不能作为映射跳过空槽。
"#".repeat(5).split('').map(x => 0)
“#”字符可以是任何有效的单个字符。
5是你想要的元素数量的变量。
7是你想要填充数组的值。
新的填充方法更好,当我编码这个我不知道它的存在,我也不知道repeat是es6;我打算写一篇博客,介绍如何将这个技巧与reduce结合起来做一些很酷的事情。
http://jburger.us.to/2016/07/14/functionally-create-a-2d-array/
在洛达什,情况没那么糟:
_.flatten(_.times(5, function () { return [2]; }));
// [2, 2, 2, 2, 2]
编辑:更好的是:
_.times(5, _.constant(2));
// [2, 2, 2, 2, 2]
编辑:更好的是:
_.fill(Array(5), 2);