2017-04-21 7 views
0

こんにちは、すべてJavascriptとAngular2の新機能です。バックエンドから渡される構成に基づいてタイミングの配列を必要とするプロジェクトに取り組んでいます。基本的な構成は、次の要素で構成されます。このような構成によりコンフィグレーションからタイムアレイを作成する

export const TIMEDATA: any = { 
    start_time: "9", 
    end_time: "16", 
    interval: "30" 
} 

、どのように私は、任意の洞察力の連中

Array = ["9:00", "9:30", "10:00", ...., "16:00"] 

のような配列の何かを思い付くことができますか?前もって感謝します。

+0

あなたは日時データオブジェクトの配列を構築しようとしていますか? – Kilmazing

答えて

0

あなたは間隔を計算するためにループを使用して試すことができます:

const leftpad = (str, padString, length) => { 
 
    var s = str.toString(); 
 
    while (s.length < length) 
 
     s = padString + s; 
 
    return s; 
 
} 
 

 
let timedata = { 
 
    start_time: "9", 
 
    end_time: "16", 
 
    interval: "30" 
 
} 
 

 
let start_time = +timedata.start_time * 60; 
 
let end_time = +timedata.end_time * 60; 
 
let interval = +timedata.interval; 
 
let times = []; 
 

 
for (var i = start_time; i <= end_time; i += interval) { 
 
    let h = Math.floor(i/60); 
 
    let m = i % 60; 
 
    
 
    let time = [h, leftpad(m, '0', 2)].join(':'); 
 
    times.push(time); 
 
} 
 

 
console.log(times);

はここlodashを使用するソリューションです。あなたのプロジェクトでlodashをすばやく使用するには、htmlページにscriptタグを含め、それを使用するファイルにdeclare _を含めます。

let timedata = { 
 
    start_time: "9", 
 
    end_time: "16", 
 
    interval: "30" 
 
} 
 

 
let start_time = +timedata.start_time * 60; 
 
let end_time = +timedata.end_time * 60; 
 
let interval = +timedata.interval; 
 

 
let times = _ 
 
    .range(start_time, end_time + interval, interval) 
 
    .map((time) => [ 
 
     _.floor(time/60), 
 
     _.padStart(time % 60, 2, '0') 
 
    ].join(':')); 
 

 
console.log(times);
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>

関連する問題