【问题标题】:JavaScript:- Add months to array of objectJavaScript:- 将月份添加到对象数组
【发布时间】:2020-06-11 22:54:13
【问题描述】:

我有一个对象数组。数组长度为 12。我需要为每个对象添加月份,添加月份的最佳方法是什么

  array = [ {name:"aa"},{name:"bb"}, {name:"cc"}.......]. 

我想要的结果

array = [ {monthName: 'January', name:"aa"},{monthName: 'February',name:"bb"}, {monthName: 'March',name:"cc"}............]. 

【问题讨论】:

标签: javascript


【解决方案1】:

由于月份名称是不可变的,并且您已经知道数组的长度正好是 12,因此只需手动逐一进行。有很多更好的方法可以做到这一点,但没有一种方法更容易理解或资源效率更高。

array[0].monthName = 'January';
array[1].monthName = 'February';
array[2].monthName = 'March';
...

【讨论】:

  • 不行,应该有别的办法
  • 当然,如果我手动编写几个月,高级开发人员不会推送我的代码。我需要从一月到十二月添加几个月
【解决方案2】:

将所有月份存储在一个数组中 months = ['January', 'February', 'March'.....]

遍历您的 array 并匹配索引

array.map((x, index) => {
  if(months[index]) {
    x.monthName = months[index];
  }
  return x;
}

【讨论】:

  • 还有其他方法吗?
  • 我觉得写月份不太好,应该有getFullMonth这样的方法
  • 为什么?您是否担心月份的名称会改变?或者他们要在日历中添加一个新月份?
  • 有一种类似date.toLocaleString('default', { month: 'long' });的方式,但在这种情况下您需要日期;这就是你要找的吗?
【解决方案3】:

您可以添加月份数组,并且无需更改数组,您可以根据您的 first array 创建 another variable 并将月份添加为 prop:

let array = [{
  name: "aa"
}, {
  name: "bb"
}, {
  name: "cc"
}];

let months = ["JAN", "FEB", "MAR"]
const res = array.map((el, index) => ({
  name: el.name,
  month: months[index]
}));



console.log(res)

【讨论】:

  • @developer 完全正确
【解决方案4】:

首先,您必须声明数组,该数组的月份如下所示

let month = ['January',February', .... ];

现在您必须迭代源数组,即数组并为每个对象推送月份属性。下面提供了代码 sn-ps。

array.forEach(element,index)=>{
     element['monthName'] = month[index]
}

【讨论】:

    【解决方案5】:

    自己定义月份数组,或者从moment.js 之类的库中获取。

    这样,如果您需要更轻松的方式,您可以在以后处理日期。如果您愿意,您还可以获得本地化(并非易事)和简称(例如“Jan”而不是“January”)。

    var array  = [{name:"aa"}, {name:"bb"}, {name:"cc"}];
    var months = moment.months(); // or .monthsShort();
    
    array.forEach((e, idx) => {
       if (months[idx]) e.monthName = months[idx];
    });
    
    console.log(array);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>

    Heremonths()monthsShort() 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2019-09-02
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      相关资源
      最近更新 更多