import { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate" function getHotelReservationQueryParams(searchParams: URLSearchParams) { const searchParamsObject: Record = 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) { // Convert value to number if the key is 'adults' or 'age' ;(nestedAcc as Record)[k] = k === "adults" || k === "age" ? Number(value) : value } else { if (!nestedAcc[k]) { nestedAcc[k] = isNaN(Number(keys[i + 1])) ? {} : [] // Initialize as object or array } } return nestedAcc[k] as Record }, acc) return acc }, {} as Record ) return searchParamsObject as SelectRateSearchParams } export default getHotelReservationQueryParams