2016-03-06 2 views
0

Мне нужно создать массив strings от 0.05 до 12, увеличивая 0.05.Улучшение динамического создания массива

Для этого я делаю это:

function createDuration(){ 
    var n = 0.05; 
    var arr = [String(n)]; 
    while(n < 12){ 
     n += 0.05; 
     var temp = n.toFixed(2); 
     arr.push(String(temp)); 
    }; 
    return arr; 
} 

Это, однако, довольно медленно. есть ли у вас какие-либо предложения по его улучшению? Я бы мог использовать _, если это поможет, но не jQuery.

ответ

0

Number#toFixed() возвращается уже струнные

function createDuration() { 
 
    var n = 0.05, 
 
     arr = []; 
 
    while (n < 12.05) { 
 
     arr.push(n.toFixed(2)); 
 
     n += 0.05; 
 
    }; 
 
    return arr; 
 
} 
 

 
document.write('<pre>' + JSON.stringify(createDuration(), 0, 4) + '</pre>');

Или с фиксированными значениями:

function createDuration() { 
 
    return Array.apply(null, { length: 240 }).map(function (_, i) { 
 
     return ((i + 1)/20).toFixed(2); 
 
    }); 
 
} 
 

 
document.write('<pre>' + JSON.stringify(createDuration(), 0, 4) + '</pre>');

+1

Вы имеете в виду [ 'Number.prototype.toFixed '] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed), неужели? – Oka

+0

@Oka, правый, спасибо. –

+0

В вашем первом решении последнее значение - «11.95», но оно должно быть «12.00» – isvforall

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