codewars (no if :D )
unknown
typescript
3 years ago
1.2 kB
4
Indexable
const YEAR = 31536000; const DAY = 86400; const HOUR = 3600; const MINUTE = 60; function generateLabel(amount: number, singularLabel: string): string { if (!amount) { return null; } return `${amount} ${singularLabel}${amount > 1 ? 's' : ''}`; } function filterExisting<K>(array: (K | null)[]): K[] { return array.filter((x) => x); } function toHumanlyReadable(duration: number): string { if (!duration) { return 'now'; } const years = Math.floor(duration / YEAR); const days = Math.floor((duration - years * YEAR) / DAY); const hours = Math.floor((duration - years * YEAR - days * DAY) / HOUR); const minutes = Math.floor( (duration - years * YEAR - days * DAY - hours * HOUR) / MINUTE ); const seconds = duration - years * YEAR - days * DAY - hours * HOUR - minutes * MINUTE; const resultArray = filterExisting([ generateLabel(years, 'year'), generateLabel(days, 'day'), generateLabel(hours, 'hour'), generateLabel(minutes, 'minute'), generateLabel(seconds, 'second'), ]); const firstPart = resultArray.slice(0, -1).join(', '); const secondPart = resultArray.slice(-1); return filterExisting([firstPart, secondPart]).join(' and '); }
Editor is loading...