//获取url后面拼接的参数
export const getQueryString = (paramName) => {
	// let urlStr = window.location.href.split('?')[1]
	// const urlSearchParams = new URLSearchParams(urlStr)
	// const result = Object.fromEntries(urlSearchParams.entries())
	// return paramName ? result[paramName] : result

  // 如果未传入 URL，则使用当前页面的 URL
  const targetUrl = window.location.href;
  // 解析 URL 中的查询字符串部分
  const queryString = targetUrl.split('?')[1];
  
  // 如果没有查询字符串，直接返回空对象或 null
  if (!queryString) return paramName ? null : {};
  
  // 处理查询字符串中的每个参数
  const params = queryString.split('&').reduce((acc, pair) => {
    const [key, value] = pair.split('=').map(decodeURIComponent);
    if (acc[key] !== undefined) {
      acc[key] = Array.isArray(acc[key]) ? [...acc[key], value] : [acc[key], value];
    } else {
      acc[key] = value;
    }
    return acc;
  }, {});
  
  // 如果指定了参数名，则返回对应值，否则返回整个参数对象
  return paramName ? params[paramName] || null : params;
}

 //是否iOS设备
export const isIOS = () => userAgent.indexOf('iPhone') > -1 || userAgent.indexOf('iPad') > -1;

 //是否Android设备
 export const isAndroid = () => userAgent.indexOf('Android') > -1;

 export const deepClone = (source) => {
	if (!source && typeof source !== "object") {
	  return source;
	}
	const targetObj = source.constructor === Array ? [] : {};
	Object.keys(source).forEach((keys) => {
	  if (source[keys] && typeof source[keys] === "object") {
		(targetObj)[keys] = deepClone(source[keys]);
	  } else {
		(targetObj)[keys] = source[keys];
	  }
	});
	return targetObj;
  }

  /**
 * @description 生成唯一 uuid
 * @returns {String}
 */
export function generateUUID() {
	let uuid = "";
	for (let i = 0; i < 32; i++) {
	  let random = (Math.random() * 16) | 0;
	  if (i === 8 || i === 12 || i === 16 || i === 20) uuid += "-";
	  uuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);
	}
	return uuid;
  }

  export function getQueryParams(url) {
    // 若未传入URL，则使用当前页面URL
    const targetUrl = url || window.location.href;
    // 用于存储查询参数的对象
    const queryParams = {};
    // 查找URL中问号的位置
    const queryStart = targetUrl.indexOf('?');
    
    // 如果URL中不存在问号，说明没有查询参数
    if (queryStart === -1) {
        return queryParams;
    }
    
    // 提取查询字符串部分（不包含问号）
    const queryString = targetUrl.substring(queryStart + 1);
    // 查找查询字符串中哈希符号的位置
    const hashIndex = queryString.indexOf('#');
    // 移除哈希符号及其后面的内容
    const cleanQuery = hashIndex !== -1 ? queryString.substring(0, hashIndex) : queryString;
    
    // 如果查询字符串为空，直接返回空对象
    if (!cleanQuery) {
        return queryParams;
    }
    
    // 按"&"分割查询字符串为参数数组
    const params = cleanQuery.split('&');
    
    // 遍历参数数组
    for (const param of params) {
        // 按"="分割每个参数为键值对
        const [key, value] = param.split('=');
        
        if (key) {
            // 对键和值进行URL解码
            const decodedKey = decodeURIComponent(key);
            const decodedValue = value !== undefined ? decodeURIComponent(value) : '';
            
            // 处理重复参数名的情况，将其值存储为数组
            if (queryParams.hasOwnProperty(decodedKey)) {
                if (!Array.isArray(queryParams[decodedKey])) {
                    queryParams[decodedKey] = [queryParams[decodedKey]];
                }
                queryParams[decodedKey].push(decodedValue);
            } else {
                queryParams[decodedKey] = decodedValue;
            }
        }
    }
    
    return queryParams;
}