2017-04-15 25 views
0

目標是通過將第一個數字四捨五入到第一個上百(例如,如果數字= 456,然後第一個數字在系列中的數字將是500),然後增加200 200,直到數字我給例如2000.使用javascript創建一系列以舍入數字開始的數字增量到最接近的數字

例如,如果我得到的數字是758,並且如果我將limit_number設置爲2000,那麼我需要用javascript以下系列並將其添加到該代碼段中:

$('img').attr('data-stoppoints', '800,1000,1200, 1400, 1600,1800, 2000'); 

正如您所看到的,生成的一系列數字需要用逗號分隔。

到目前爲止,我的代碼是

var number = (screen.Width) 
var rounded_number=Math.ceil(number/100)*100 
$('img').attr('data-stoppoints', rounded_number,'<I don't know here what to write'); 

如何實現這一目標?

+0

爲此創建一個單獨的函數,圍繞您的編號創建一個循環來填充數組,直到您的第二個數字並將該數組作爲字符串以逗號分隔符返回。 – xDreamCoding

+0

您可能更有魅力,但爲什麼不循環,並按照您的描述來完成?當沒有內置的時候,你必須編寫無聊的代碼。 –

+0

我很初學者,我不知道該怎麼做:) – Mathieu

回答

-2

你可以使用產生值的數組(範圍)的輔助功能:

function range(start, stop, step = 1, roundTo = 1) { 
 
    result = []; 
 
    for (var i = Math.ceil(start/roundTo) * roundTo; i < stop; i += step) { 
 
     result.push(i); 
 
    } 
 
    return result; 
 
} 
 

 
$('img').data('stoppoints', range(468, 1600, 200, 100).join(',')); 
 
//       ^^^^ start,stop,step,round 
 

 
console.log($('img').data('stoppoints'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<img>

注意,jQuery有一個data方法與data-屬性的效果很好,所以我會使用該代替attr

+3

祝賀打破每個人的努力。 –

+0

@Denys,無論如何,我會加深我的javascript知識,你是對的,需要鍛鍊才能理解:) – Mathieu

+1

@Mathieu這不是真的關於JavaScript,它是關於編程,關於如何潛入問題,而不是凝視在它。 –

0

嘗試調用該函數作爲generateSeries(number),你已經寫rounded_number,就像這樣:

var number = (screen.Width) 
$('img').attr('data-stoppoints',generateSeries(number)); 

generateSeries功能。 (您需要此代碼段添加到您的JS調整變量limitincrement達到目標。):

generateSeries = function(number) { 
    var limit = 2000; 
    var increment = 200; 
    var divisor = 100; 

    var nums = []; 
    var n = Math.ceil(number/divisor)*divisor; 
    for(;n<=limit;n=n+increment) { 
     nums.push(n); 
    } 
    return nums.join(); 
}; 

輸入:758

輸出:「800,1000,1200,1400,1600 ,1800,2000「

相關問題