функциональный способ перебора диапазона (ES6 / 7) [дубликат]

На этот вопрос уже есть ответ здесь:

Существует ли механизм зацикливания х раз в ES6 (ECMAScript 6) без изменяемых переменных? 15 ответов

Каков наилучший способ сделать ниже более функциональным способом (с ES6 / ES7)

let cols = [];
for (let i =0; i <= 7; i++) {
   cols.push(i * i);
}
return cols;

Я пытался, как,

return [ ...7 ].map(i => {
  return i * i;
});

но это переводится на

[].concat(7).map(function (n) {
  return n * n;
});

это не то, что я ожидал.

РЕДАКТИРОВАТЬ:

@pavlo. Действительно, это была ошибка. Я использовал JSX, и, например, я хочу 7 div, (не проверено)

let cols = [];
    for (let i =0; i <= 7; i++) {
       cols.push(<div id={i}> ...  </div>)
    }
    return cols;

поэтому идея заключалась в том, чтобы уменьшить количество временных переменных и процедурных ощущений.

Ответы на вопрос(3)

Ваш ответ на вопрос