首页 > 解决方案 > 在 React Native 中实现一个包含月份和日期的二维数组

问题描述

我想实现一个包含月份(按名称)和日期(如 - 01/01/2020)的二维数组(稍后我会将其推送到 Firebase db)

目标是在firebase中它看起来像这样:每个月的文档(Jan,Feb等......)在每个文档内部:某个月份的日期(1/1/20,2/1/20和ETC)

月份数组:

const months = new Array(11);
months[0] = "Jan";
months[1] = "Feb";
months[2] = "Mar";
months[3] = "Apr";
months[4] = "May";
months[5] = "Jun";
months[6] = "Jul";
months[7] = "Aug";
months[8] = "Sep";
months[9] = "Oct";
months[10] = "Nov";
months[11] = "Dec";

日期推送代码(将所有 365 个日期推送到数组中):

    const dates = [];
for (
  firstDay;
  firstDay < lastDay;
  firstDay.setDate(firstDay.getDate() + 1)
) {
  dates.push(new Date(firstDay));
}

如何使用以下代码实现我想要的?

标签: react-nativemultidimensional-array

解决方案


好吧,月份应该是一个字符串数组(如您的第一段代码所示)或一个数组数组(数字......天......)。

不可能两者兼而有之。

由于您想要二维数组,因此您可能正在寻找第二个选项,然后字符串(“Jan”、“Feb”等)没有任何意义。

要实现二维数组,您可以执行以下操作:

const daysInMonth = [31, 28, 31, 30, ...];
const array2d = [];
for (let i = 0; i < 12; i++) {
     const days = [];
     for (let j = 0; j < daysInMonth[i]; j++) {
          days.push(j);
     }
     array2d.push(days);
}

如果你想用字符串来实现第一个选项(我假设你不会像 firebas 的 2d 数组那样......),那么你可以用对象来做到这一点:

   {
      Jan: [0,1,2,...31],
      Feb: [0,1,2,...28],
      ...
   }

推荐阅读