如何将数组数字映射到定时值

问题描述 投票:0回答:1

你好,我有一个数字阵列

let timearray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

但问题是我在DOM中显示数组的值,但我想让它的值被相应地映射。例如:如果0 -> 12:00am,如果它的18 -> 6:00pm。我怎样才能做到这一点?任何想法的家伙?我只能想到使用if else映射。但这似乎很丑陋。任何想法的家伙?

javascript
1个回答
3
投票

你需要这样定义你的数组。

const timearray = [
 '12:00am',
 '01:00am',
 '02:00am',
 '03:00am',
...
 '10:00pm',
 '11:00pm',
]
console.log(timearray[3])
// 03:00am

1
投票

下面是一个例子 map 功能,您可以使用(并根据您的需求进行改进)。

const timeArray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];
const result = timeArray.map(t => {
  const ampm = t % 12;
  return `${ampm === 0 ? 12 : ampm}:00${t >= 12 ? 'pm' : 'am'}`;
});
console.log(result)

0
投票

这正是 Array.map 是为了。

let timearray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]

let mapped = timearray.map(function(value) {
    switch (value) {
        case 0: return "12:00am"
        // ..
        case 18: return "6:00pm"
    }
})

或者你可以使用一个对象

let timearray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]

let map = {
    0: "12:00am",
    18: "6:00pm"
}

let mapped = timearray.map(function(value) {
    return map[value]
})

如果你只是想把24小时的时间转换为12小时的时间。而不是映射的值 然后用谷歌搜索 "24 hour time to 12 hour time" 你就会找到答案。


0
投票

要将整数转换成12小时格式的小时,可以使用安培格式。

let timearray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];

timearray.forEach(x => {
  var suffix = x >= 12 ? "pm":"am"; 
  hours = ((x + 11) % 12 + 1) + suffix;
  console.log(hours);
  }
);

根据这个答案的代码: 使用Javascript将24小时时间转换为12小时时间,AM & PM。


0
投票

你也可以考虑利用一个库,如, moment.js (https:/momentjs.com。)在这种情况下,这里是一个使用的例子。

var time = moment(2,"h:hh A");
console.log(time);
// 02:00am

这种方法的好处是,如果需要的话,你可以很容易地对输出进行格式化。

© www.soinside.com 2019 - 2024. All rights reserved.