2015-05-06 2 views
0

У меня есть цикл, как так:арифметической последовательности: использовать или применить карту вместо петли для

var myary = []; 
for(i=0; i<3; i++){ 
    myary[i] = i; 
} 
//yields [0, 1, 2] 

Я хотел бы сделать то же самое с myary.apply() или функциональным эквивалентом, но я не знаком с генерирование арифметических последовательностей с помощью функциональных методов в JavaScript. Возможно ли это?

+0

'[] .map.call (Array (10) +1, Function.call.bind (Number))' – dandavis

+0

'Object.keys (Object (Array (10) +0)). Map (Number)' – dandavis

+2

Проверьте [Создание диапазона в JS] (http://stackoverflow.com/q/18947892/1048572) – Bergi

ответ

0

В ES5 нет чистого и легкого функционального решения. Вот самый простой у меня есть:

var myary = Array.apply(0,Array(N)).map(function(_,i){return i}); 

Edit: Будьте осторожны, что выражения такого рода, в то же время иногда удобно, может быть очень медленным. This commit Я был мотивирован проблемами производительности. Старый стиль и скучный цикл часто могут быть намного быстрее.

+0

хотя, возможно, не «чистый» или «простой», я считаю, что это читаемо. – jml

+0

'Function.call.bind (Number)' - хороший способ получить аргументы [1] без пользовательского ... – dandavis

+1

@jml На всякий случай, вы можете проверить мое редактирование, чтобы вы не мучительно обнаружили позже причина замедления вашей заявки. –

Смежные вопросы