【问题标题】:Javascript - convert number to month nameJavascript - 将数字转换为月份名称
【发布时间】:2018-04-19 07:41:38
【问题描述】:

我有一个非常简单的问题,但由于某种原因我找不到答案。

label.forEach(function(value){
    months.push(value['month']);
    revenue.push(value['revenue']);
});

label 是一组数字和收入,在我的例子中是

[
{month: 9, revenue: 400}, 
{month: 11, revenue: 500},
{month: 12, revenue: 600}
]

这是 javascript 中的 forEach 循环,它将收入和月份数推送到两个单独的数组中,问题是月份是一个数字(例如 12),但我希望 .push() 改为推送月份名称(12 月),我似乎找不到任何东西,所以我希望这里的任何人都可以帮助我。

【问题讨论】:

  • Get month name from Date的可能重复
  • 那么这个月是从0还是1开始?
  • @brk 从1开始
  • @hsz 已经尝试过了,但答案中的数组已经有月份名称而不是数字
  • 数组中没有名为monthrevenue 的键。那么如何访问循环中的那些?

标签: javascript loops foreach numbers


【解决方案1】:
var months = [ "January", "February", "March", "April", "May", "June", 
           "July", "August", "September", "October", "November", "December" ];

var selectedMonthName = months[value['month']];

查看链接

stack 1

【讨论】:

  • 完全查看了这个答案,但它成功了,非常感谢!
  • 如果月份从 1 开始(一月是 1),您将不得不像 var selectedMonthName = months[value['month'] - 1]; 这样访问月份,因为一月的索引为 0
  • 我在索引零处使用了一个空白字符串。防御性编码会让我测试一个月,值为 0
【解决方案2】:
Intl.DateTimeFormat('en', { month: 'long' }).format(new Date('1')); // January

可以使用Internationalization API实现

【讨论】:

    【解决方案3】:

    这可以使用 moment.js 轻松完成。

    var months = [];
    months.push(moment().month(0).format("MMMM"));
    console.log(months);
    <script src="https://momentjs.com/downloads/moment.min.js"></script>

    【讨论】:

    • 只需调用 moment.months();
    • 如果你只需要“Jan”而不是月份的全名,格式(“MMM”)这样。只有 3 M 而不是 4 M。
    【解决方案4】:
        <script src="https://momentjs.com/downloads/moment.min.js"></script>
    
        var monthNumber='03';
        var month = [ "January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December" ];
        var monthIndex = moment().month(monthNumber[1]-1).format("M");
        var selectedMonthName = month[monthIndex-1];
        alert(selectedMonthName);
    

    【讨论】:

      【解决方案5】:

      另一种简单的方法是使用地图,像这样创建一个

      const monthNumberToLabelMap = {
        [1]: 'January',
        [2]: 'February',
        [3]: 'March',
        [4]: 'April',
        [5]: 'May',
        [6]: 'June',
        [7]: 'July',
        [8]: 'August',
        [9]: 'September',
        [10]: 'October',
        [11]: 'November',
        [12]: 'December',
      }
      

      然后像这样在代码中使用地图

      label.forEach(function(value){
          months.push(monthNumberToLabelMap[value['month']]);
          revenue.push(value['revenue']);
      });
      

      注意:

      从你的问题中不清楚你的月份数据的格式是什么,默认的 javascript 月份是 0-11,在这种情况下你会改变我的地图

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-07
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        相关资源
        最近更新 更多