【发布时间】:2015-09-05 09:58:31
【问题描述】:
假设我需要一个包含许多重复元素的数组,如下所示:
[3,3,3,3,3,8,8,8,8,5,5,5,5,5,5](即五个 3、四个 8 和六个 5)
在python中,你可以像这样非常优雅地定义它:
[3]*5+[8]*4+[5]*6
在 JS 或 PHP 中有类似的构造吗?
在这个例子中,明确定义整个数组并不是什么大问题。但是如果有很多元素,有很多重复,这可能会变得非常乏味(更不用说容易了)。我希望我的代码大小保持相等,无论数组有五个 3 还是 500。
在JS中,我能想到的最短的是:
var a = [];
[[3,5],[8,4],[5,6]].forEach(function(x){while(x[1]--)a.push(x[0])});
在 PHP 中类似:
foreach(array(3=>5,8=>4,5=>6) as $d=>$n) while($n--) $a[]=$d;
显然,这不会为可读性得分。有没有更好的方法(最好是某种语言结构)来做到这一点?
【问题讨论】:
标签: javascript php arrays repeat