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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数组数字映射到定时值相关的知识,希望对你有一定的参考价值。

你好,我有一个数字阵列

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映射。但这似乎很丑陋。任何想法的家伙?

答案

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

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

下面是一个例子 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)
另一答案

这正是 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" 你就会找到答案。

另一答案

要将整数转换成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);
  }
);
另一答案

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

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

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

以上是关于如何将数组数字映射到定时值的主要内容,如果未能解决你的问题,请参考以下文章

如何将3个数字映射到一个值(动态编程)

如何使用jq将json项目值映射到兄弟数组

如何将无序映射的值设置为 0 以外的数字

如何使用 Jackson 将 JSON 键值数组动态映射到子对象?

LeetCode448. 找到所有数组中消失的数字

从字典数组映射到 Swift 中的数字数组