Underscore: функция массива: повторить значение x раз

Созданный на 21 нояб. 2012  ·  4Комментарии  ·  Источник: jashkenas/underscore

предложено подразумевает:

_.repeat("0",10)
// => ["0","0",... 10 times]

или, альтернативно, измените функцию _.range так, чтобы:

_.range(0,0,10), instead of outputting [] outputs the above.

Вот пример использования:

var values = ["A","B","C"];
_.object(values)
// => {"A":undefined,"B":undefined,"C":undefined} // wonderful, as expected

Но что, если я хочу инициализировать каждое значение в парах ключ / значение одним и тем же значением?
Это может быть другой вариант, но он не работает:

_.object(values,"0") // provide scalar instead of array
// => {"A":undefined,"B":undefined,"C":undefined} // same as before

Это сработало бы, если бы _repeat существовал:

_.object(values,_.repeat("0",values.length))
// => {"A":"0","B":"0","C":"0"} 

Самый полезный комментарий

Вместо другого метода мы могли бы просто модифицировать _.times чтобы возвращать результат каждого вызова callback , как это делает Lo-Dash :

var zeros = _.times(10, function() { return 0; });
// => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Все 4 Комментарий

+1 для функции повтора массива. Я бы не стал изменять для этого _.range , поскольку он предназначен для диапазонов номеров.

Вместо другого метода мы могли бы просто модифицировать _.times чтобы возвращать результат каждого вызова callback , как это делает Lo-Dash :

var zeros = _.times(10, function() { return 0; });
// => [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

+1 @jdalton.

Для меня это звучит хорошо - дерзай.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги