【发布时间】:2019-03-18 09:21:11
【问题描述】:
我想转换这个数组对象 - 值可能会改变,不要介意 我试过但没有用。 如何通过 JavaScript 将其转换为以下内容?
var msg = [{
room_no: 'Room #1',
invoice: '#001',
check_in: '2019-02-20T06:45:00.000Z',
check_out: '2019-02-25T05:30:00.000Z',
booking_type: '3',
booking_status: 'checked-out'
},
{
room_no: 'Room #2',
invoice: '#002',
check_in: '2019-03-07T07:45:00.000Z',
check_out: '2019-03-09T06:30:00.000Z',
booking_type: '2',
booking_status: 'Stay-in'
},
{
room_no: 'Room #2',
invoice: '#002',
check_in: '2019-03-20T07:45:00.000Z',
check_out: '2019-03-22T06:30:00.000Z',
booking_type: '2',
booking_status: 'Stay-in'
}
]
// into this array object
[{
"Room #1": [{
"2015/02/20": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
"2015/02/21": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
"2015/02/22": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
"2015/02/23": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
"2015/02/24": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
"2015/02/25": [{
"Invoice": "#001",
"BookingType": "2",
"Status": 3
}],
}],
"Room #2": [{
"2015/03/07": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}],
"2015/03/08": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}],
"2015/03/09": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}],
"2015/03/20": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}],
"2015/03/21": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}],
"2015/03/22": [{
"Invoice": "#002",
"BookingType": "2",
"Status": 3
}]
}]
}]
我想转换这个数组对象 - 值可能会改变,不要介意 我试过但没有用。 如何通过 JavaScript 将其转换为以下内容?
我试过这种方法,但没有用
const moment = require('moment');
const MomentRange = require("moment-range"),
Moment = MomentRange.extendMoment(moment);
var object3={}
msg.map((obj, i) => {
let
range = Moment().range(obj.check_in, obj.check_out),
datesarray = Array.from(range.by("days"));
// console.log("range",range);
datesarray.map( m => {
// object3[m.format("YYYY/MM/DD")]= [{"Invoice":obj.invoice,"BookingType":obj.booking_type,"Status":obj.booking_status}]
object3[m.format("YYYY/MM/DD")]= [{"Invoice":obj.invoice,"BookingType":obj.booking_type,"Status":obj.booking_status}]
// [{"Invoice":obj.invoice,"BookingType":obj.booking_type,"Status":obj.booking_status}]
console.log("day",m.format("YYYY/MM/DD"),obj.invoice,"BookingType",obj.booking_type,"Status",obj.booking_status)
});
// object2[obj.room_no]=["dd"]
// console.log("range",obj.room_no)
// object1[obj.room_no]=[object2]
});
// console.log("object 2",object2)
// console.log("obj",object3)
【问题讨论】:
-
SO 不适合 我想要。它是为了我被困在这里。请分享您的尝试
-
第一个数组和第二个数组几乎没有任何匹配
-
我修好了,现在你可以看到比赛了
-
datesarrays.map(...)不会改变数组,而是返回一个新数组。所以你需要做datesarrays = datesarrays.map(...)
标签: javascript arrays object arrayobject