Как я могу заполнить массив с помощью функции обратного вызова в javascript? - PullRequest
0 голосов
/ 24 января 2019

Допустим, у меня есть что-то вроде этого:

window.dayNames = function () {
 let names = [];
 for (let i = 0; i < 7; i++) {
    names.push(moment().day(i).format('dddd'));
 }
 return names;
}

Есть ли более понятное сокращение, чтобы иметь его с js?Например, я смотрел на lodash lib _.fill

Мне было интересно, существует ли что-то вроде:

 _.fill(0,7, (i) => {return moment().day(i).format('dddd');}); 

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете использовать lodash's _.times():

const dayNames = (n = 7) => _.times(n, i => moment().day(i).format('dddd'));

const result = dayNames();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
0 голосов
/ 24 января 2019

Вы можете использовать Array.from:

Array.from({length:7}, (_, i) => moment().day(i).format('dddd'))

Array.from() имеет необязательный параметр mapFn, который позволяет вам выполнить функцию карты для каждого элемента массива

...