ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลข num ซึ่งแทนจำนวนวินาที เป็นอาร์กิวเมนต์เดียว
ฟังก์ชันควรสร้างและคืนค่าสตริงที่ประกอบด้วยข้อมูลของปี วัน ชั่วโมง และนาทีที่อยู่ในวินาทีเหล่านั้น โดยสมมติว่าปีทุกปีมี 365 วัน
ตัวอย่างเช่น หากอินพุตคือ
const num = 5454776657;
ผลลัพธ์ควรเป็น
const output = '172 years, 353 days, 23 hours, 44 minutes and 17 seconds';
ตัวอย่างโค้ด
const findTime = (num) => {
if (num < 1) {
return '0';
}
const qualifier = num => (num > 1 ? 's' : '');
const numToStr = (num, unit) => num > 0 ? ` ${num} ${unit}${qualifier(num)}` : '';
const oneMinute = 60;
const oneHour = oneMinute * 60;
const oneDay = oneHour * 24;
const oneYear = oneDay * 365;
const times = {
year: ~~(num / oneYear),
day: ~~((num % oneYear) / oneDay),
hour: ~~((num % oneDay) / oneHour),
minute: ~~((num % oneHour) / oneMinute),
second: num % oneMinute,
};
let str = '';
for (let [key, value] of Object.entries(times)) {
str += numToStr(times[key], key);
}
const arr = str.trim().split(' ');
const res = [];
arr.forEach((x, i) => {
if (i % 2 === 0 && i !== 0) res.push(i === arr.length - 2 ? 'and' : ',');
res.push(x);
});
return res.join(' ').replace(/\s,/g, ',');
};
console.log(findTime(5454776657));ผลลัพธ์
172 years, 353 days, 23 hours, 44 minutes and 17 seconds