I want to type something like [1] * totalPoints so that if totalPoints was 3, it would give me an array of [1,1,1]. I can't think of what it would be called though.. as such, my searches have turned up nothing. I mean, I could easily accomplish this with a for loop, but I seem to be under the impression that I've used something like this before and I just can't think of it.
Is there anything like this in javascript?
            Asked
            
        
        
            Active
            
        
            Viewed 214 times
        
    1
            
            
         
    
    
        さりげない告白
        
- 1,397
- 2
- 13
- 26
- 
                    I don't think JS has this built-in, you may be thinking of other languages. – Barmar Mar 01 '14 at 00:33
- 
                    This has been asked before: http://stackoverflow.com/questions/4049847/initializing-an-array-with-a-single-value – user3358344 Mar 01 '14 at 00:34
- 
                    possible duplicate of [Create an array with same element repeated multiple times in javascript](http://stackoverflow.com/questions/12503146/create-an-array-with-same-element-repeated-multiple-times-in-javascript) – Barmar Mar 01 '14 at 00:35
- 
                    Alright, thanks. I know how I'm going to handle it now. It was probably python I did that in now that I think about it... – さりげない告白 Mar 01 '14 at 00:39
2 Answers
2
            Create a new array of size 3 then use the array map function on each element, calling valueOf:
var totalPoints = Array.apply(null, new Array(3)).map(Number.prototype.valueOf,1);
 
    
    
        dereference
        
- 36
- 3
- 
                    This is the closest to what I was looking for. totalPoints was the variable however, so it would go where the 3 is and the array would be named something else. Thanks for your answer. ^^ – さりげない告白 Mar 01 '14 at 00:49
- 
                    2Though this is nifty code, I would recommend against it. Really what's the reason to save those few lines of a loop but in return making a task as simple as this look so complicated? Anyone looking at this code will have trouble understanding what it does, including you in a few weeks (if you even understand how this works in the first place). Readability is more important than saving yourself a couple of lines. – Ingo Bürk Mar 01 '14 at 00:55
- 
                    @IngoBürk and is the slowest option. A pre-allocated array filled with a for-loop is by far the fastest option (http://jsperf.com/pre-fill-an-array) – Mar 01 '14 at 00:59
- 
                    @Ken But that also doesn't matter. If you have to worry about the performance of creating an array with a few entries, you are in a lot of trouble. – Ingo Bürk Mar 01 '14 at 01:01
- 
                    1@IngoBürk: That all depends on context. Try playing with canvas for example. Every bit counts. – user13500 Mar 01 '14 at 01:02
- 
                    @user13500 Good JS engines optimize stuff like loops so it doesn't really matter how exactly you write them. http://www.youtube.com/watch?v=goreks4apFg#t=3m30s – Ingo Bürk Mar 01 '14 at 01:05
- 
                    To make sure I should be more precise: "doesn't matter" was the wrong term of me to use. Really what I meant to say is: it's the last thing to worry about. There are way more important reasons to decide against this. *If* you do have to create 300,000 arrays per second, yes, worry about loop performance. But even in a canvas environment that should be pretty rare and you likely will have more serious performance issues than this then. – Ingo Bürk Mar 01 '14 at 01:12
0
            
            
        var myArray = [];
function pointsArray(totalPoints) {
    for (i = 0; i < totalPoints; i++) {
        myArray.push(1);
    }
    return myArray;
}
 
    