Использование оператора спреда в массиве (). Fill () [duplicate]

Попробуйте

<?php
$to = "somebody@example.com, somebodyelse@example.com";
$subject = "HTML email";

$message = "
    <html>
    <head>
       <title>HTML email</title>
    </head>
    <body>
      <p>This email contains HTML Tags!</p>
      <table>
        <tr>
         <th>Firstname</th>
         <th>Lastname</th>
        </tr>
        <tr>
          <td>John</td>
          <td>Doe</td>
        </tr>
      </table>
    </body>
    </html>";

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";

mail($to,$subject,$message,$headers);
?> 
24
задан Koen Morren 23 February 2016 в 14:09
поделиться

5 ответов

Вы можете сначала fill массив с любым значением (например, undefined), а затем вы сможете использовать map:

var arr = new Array(2).fill().map(u => ({}));
var arr = new Array(2).fill().map(Object);
24
ответ дан Oriol 23 August 2018 в 07:02
поделиться

Одно решение для исполнителя: Array.from({ length: 5 }, () => new Object())

1
ответ дан Ilias Karim 23 August 2018 в 07:02
поделиться

Принятый ответ хорош и будет работать в 90% случаев.

Но если вы делаете приложение JS с высокой производительностью, и если вы работаете с большими / огромными массивами, Array.map (. .) создает большую перегрузку как в памяти, так и в процессоре, поскольку создает копию массива.

Я рекомендую использовать классический цикл:

    a = new Array(ARRAY_SIZE);
    for (var i = 0; i < ARRAY_SIZE; i++) {
        a[i] = [];
    }

Я проверил три альтернативы и получили это:

  • Предлагаемый ответ (в 11 раз больше):
    a = new Array(ARRAY_SIZE).fill().map(u => { return []; });
    
  • Простой цикл (самый быстрый):
    a = new Array(ARRAY_SIZE);
    for (var i = 0; i < ARRAY_SIZE; i++) {
        a[i] = [];
    }
    
  • для каждого (в 2 раза медленнее):
    a = new Array(ARRAY_SIZE).fill();
    a.forEach((val, i) => {
        a[i] = [];
    })
    

PS. Я использовал этот скрипт для тестов.

9
ответ дан Kostanos 23 August 2018 в 07:02
поделиться
1
ответ дан jamess 6 November 2018 в 00:32
поделиться
0
ответ дан Rick 6 November 2018 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: