url/objToUrlParam.jsjavascript
/**
 * 将对象序列化为 URL 查询字符串。
 * @function objToUrlParam
 * @memberof module:url
 * @param {Record<string, string | number | boolean | null | undefined>} params 查询参数
 * @returns {string} 不包含开头问号的查询字符串
 * @throws {TypeError} params 不是对象时抛出
 */

function objToUrlParam(params) {
  if (params === null || typeof params !== 'object' || Array.isArray(params)) {
    throw new TypeError('params must be an object')
  }

  const search = new URLSearchParams()
  Object.entries(params).forEach(([key, value]) => {
    if (value === undefined || value === null) return
    if (Array.isArray(value)) value.forEach(item => search.append(key, String(item)))
    else search.append(key, String(value))
  })
  return search.toString()
}

export default objToUrlParam