根据匹配值从2个数组创建(多维?)数组

时间:2018-03-29 20:28:37

标签: javascript arrays multidimensional-array array-filter

我对如何根据其他2个阵列正确制作数组感到困惑。

我有一个这样的数组:

let date = [1522303200000, 1522389600000, 1522476000000]

,第二个数组看起来像这样:

let people = [
  {
    "id": 0,
    "name": "Sophia Mason",
    "biography": "Lorem ...",
    "availability": [
      {
        "date": 1522303200000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      },
      {
        "date": 1522389600000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      },
      {
        "date": 1522476000000,
        "times": ["10:00 am", "2:30 pm", "5:00 pm"]
      },
      {
        "date": 1522735200000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      }
    ]
  },
  {
    "id": 1,
    "name": "Brandon Hampton",
    "biography": "Lorem ...",
    "availability": [
      {
        "date": 1522303200000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      },
      {
        "date": 1522476000000,
        "times": ["10:00 am", "2:30 pm", "5:00 pm"]
      },
      {
        "date": 1522648800000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      },
      {
        "date": 1522735200000,
        "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
      }
    ]
  }
]

我正在尝试创建一个数组,该数组的日期为数组中每个索引的顶级,然后是每天相应的人,如果该日期有可用性。我在想类似的事情:

let calendar = [
    [
      1522303200000,
      "photographers": [
        {
          "id": 0,
          "name": "Sophia Mason",
          "biography": "Lorem ...",
          "availability": [
            {
              "date": 1522303200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522389600000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522476000000,
              "times": ["10:00 am", "2:30 pm", "5:00 pm"]
            },
            {
              "date": 1522735200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            }
          ]
        },
        {
          "id": 1,
          "name": "Brandon Hampton",
          "biography": "Lorem ...",
          "availability": [
            {
              "date": 1522303200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522476000000,
              "times": ["10:00 am", "2:30 pm", "5:00 pm"]
            },
            {
              "date": 1522648800000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522735200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            }
          ]
        }
      ]
    ],
    [
      1522303200000,
      "photographers": [
        {
          "id": 0,
          "name": "Sophia Mason",
          "biography": "Lorem ...",
          "availability": [
            {
              "date": 1522303200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522389600000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            },
            {
              "date": 1522476000000,
              "times": ["10:00 am", "2:30 pm", "5:00 pm"]
            },
            {
              "date": 1522735200000,
              "times": ["9:00 am", "2:30 pm", "5:00 pm", "6:00 pm"]
            }
          ]
        }
      ]
    ],
    ...
  ]

但我现在仍然坚持如何解决这个问题。我可能已经看了很长时间才能真正地围绕这个。

我看了以下几个地方以获得一些想法:

stack

stack

youtube

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

此功能



createCalendar(date, people) {
    const calendar = {};
    date.forEach(element => {
      calendar[element] = [];
      people.forEach(person => {
        if (person.availability.map(item => item.date).includes(element)) {
          calendar[element].push(person);
        }
      })
    })
    return calendar;
  }




创建一个与您想到的数据结构类似的数据结构。 calendar是一个对象,其中每个键都是date,相应的值是一个数组,其中包含该日期可用性的所有people