【发布时间】:2021-11-01 02:45:22
【问题描述】:
我有两个不同的数组:
accomodation: [
{
id: 1,
name: "Senator Hotel Fnideq",
address: "Route de Ceuta, 93100 Fnidek, Morocco",
checkin: "September 1",
fullCheckinDate: "2021-09-01",
checkout: "September 3",
fullCheckoutDate: "2021-09-03",
nights: 2,
mealplan: "Breakfast,Lunch"
},
{
id: 2,
name: "Kabek Morocco Hotel",
address: "Omis Juy, 93100 Kabek, Morocco",
checkin: "September 3",
fullCheckinDate: "2021-09-03",
checkout: "September 5",
fullCheckoutDate: "2021-09-05",
nights: 2,
mealplan: "Breakfast,Lunch"
}
]
experiences: [
{
id: 1,
fullDate: "2021-09-01",
title: "Arrival",
itinerary: // []
},
{
id: 2,
fullDate: "2021-09-02",
title: "Sightseeing",
itinerary: // []
}
]
我想找到一种方法将住宿和体验之间相同的日期组合成一个对象。
myTrips: [
{
accomodation: {
id: 1,
name: "Senator Hotel Fnideq",
address: "Route de Ceuta, 93100 Fnidek, Morocco",
checkin: "September 1",
fullCheckinDate: "2021-09-01",
checkout: "September 3",
fullCheckoutDate: "2021-09-03",
nights: 2,
mealplan: "Breakfast,Lunch"
},
experiences: {
id: 1,
fullDate: "2021-09-01",
title: "Arrival",
itinerary: // []
}
},
//... another object
]
我正在使用dayjs 来帮助确定日期。我该怎么做呢
【问题讨论】:
-
通常参考ISO 8601。绝对不是 01/09/2021,这是模棱两可的。
-
要解决这个问题,您必须首先像@jarmod 建议的那样格式化两个数组中的日期,然后如果日期相同,则将数组合并到单独的对象中。您可以使用 reduce 或 lodash。或者您可以按日期对数组进行排序并合并它们
-
对merging objects by ID 的一些想法。您可能会扩展到包括日期重叠。
-
不知道你说的最后一句话是什么意思。可以给个代码sn-p吗?
-
这里没有足够的信息。体验 ID 是否与住宿 ID 相关,还是相互独立?在同一家酒店的一次住宿可以有多种体验吗?您提出的结果(其中体验是单个对象)表明不能超过一个,但看起来抵达和观光都是在第一家酒店时的体验。
标签: javascript arrays vue.js object dayjs