How to add same elements to javascript array n times

前端 未结 3 2108
陌清茗
陌清茗 2020-11-22 08:40
var fruits = [];
fruits.push(\"lemon\", \"lemon\", \"lemon\", \"lemon\");

Instead of pushing same elements how can write it once like this:

<
相关标签:
3条回答
  • 2020-11-22 09:24

    For primitives, use .fill:

    var fruits = new Array(4).fill('Lemon');
    console.log(fruits);

    For non-primitives, don't use fill, because then all elements in the array will reference the same object in memory, so mutations to one item in the array will affect every item in the array.

    const fruits = new Array(4).fill({ Lemon: 'Lemon' });
    
    fruits[0].Apple = 'Apple';
    console.log(JSON.stringify(fruits));
    
    
    // The above doesn't work for the same reason that the below doesn't work:
    // there's only a single object in memory
    
    const obj = { Lemon: 'Lemon' };
    
    const fruits2 = [];
    fruits2.push(obj);
    fruits2.push(obj);
    fruits2.push(obj);
    fruits2.push(obj);
    
    fruits2[0].Apple = 'Apple';
    console.log(JSON.stringify(fruits2));

    Instead, explicitly create the object on each iteration, which can be done with Array.from:

    var fruits = Array.from(
      { length: 4 },
      () => ({ Lemon: 'Lemon' })
    );
    console.log(fruits);

    For an example of how to create a 2D array this way:

    var fruits = Array.from(
      { length: 2 }, // outer array length
      () => Array.from(
        { length: 3 }, // inner array length
        () => ({ Lemon: 'Lemon' })
      )
    );
    console.log(fruits);

    0 讨论(0)
  • 2020-11-22 09:32

    Try using Array constructor:

    let myArray = Array(times).fill(elemnt)
    

    See more here Array

    0 讨论(0)
  • 2020-11-22 09:39

    You shouldn't use the array constructor, use [] instead.

    const myArray = [];   // declare array
    
    myArray.length = 5; // set array size
    myArray.fill('foo'); // fill array with any value
    
    console.log(myArray); // log it to the console

    0 讨论(0)
提交回复
热议问题