JavaScript: How to add x to an array x times?

Mulan picture Mulan · Mar 19, 2014 · Viewed 13.2k times · Source

I imagine this is similar to array padding, but I wonder if it can be simplified at all.

var arr = [1,2,3],
    x   = 5;

for (var i=0; i<x; i++) {
  arr.push(x);
}

console.log(arr);
//=> [1, 2, 3, 5, 5, 5, 5, 5]

Is there any way to do this without using the for loop?


Update

Even though there's mover clever solutions, the for-loop seems to be the most performant

array-fill-2 Benchmarks on jsperf

Answer

paxdiablo picture paxdiablo · Mar 19, 2014

Unless you get penalised for each line of code you write, that code is fine: succinct and very understandable.

If you do get penalised, just use:

for (var i = 0; i < x; i++) arr.push(x);

on a single line :-)

Beyond that, your best bet would be a function along the lines of:

arr = appendXCopiesOfX (arr, x);

but I don't think you're really gaining anything there since, as mentioned, there should be very little problem understanding such a small loop.

All in all, it's probably a waste of time and effort trying to improve what you currently have.