24 lines
837 B
TypeScript
24 lines
837 B
TypeScript
import { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
|
|
|
|
function getHotelReservationQueryParams(searchParams: URLSearchParams) {
|
|
const searchParamsObject: SelectRateSearchParams = Array.from(
|
|
searchParams.entries()
|
|
).reduce((acc, [key, value]) => {
|
|
const keys = key.replace(/\]/g, "").split(/\[|\./) // Split keys by '[' or '.'
|
|
keys.reduce((nestedAcc, k, i) => {
|
|
if (i === keys.length - 1) {
|
|
nestedAcc[k] = value // Assign value at the last key
|
|
} else {
|
|
if (!nestedAcc[k]) {
|
|
nestedAcc[k] = isNaN(Number(keys[i + 1])) ? {} : [] // Initialize as array or object
|
|
}
|
|
}
|
|
return nestedAcc[k]
|
|
}, acc)
|
|
return acc
|
|
}, {} as SelectRateSearchParams)
|
|
return searchParamsObject
|
|
}
|
|
|
|
export { getHotelReservationQueryParams }
|