HarmonyOS 鸿蒙Next中网址参数拼接方法,支持各种对象类型

HarmonyOS 鸿蒙Next中网址参数拼接方法,支持各种对象类型

/**
 * 将参数对象拼接到URL上
 * @param url 原始URL
 * @param params 参数对象,键为string,值为string或number,支持任意类型
 * @returns 拼接后的完整URL
 */
export function appendParamsToUrl(url: string, params: Record<string, string | number>): string {
  // 1. 检查是否有参数
  if (!params || Object.keys(params).length === 0) {
    return url;
  }

  // 2. 手动拼接查询字符串(避免 map 和解构参数)
  let queryString = "";
  const paramKeys = Object.keys(params);

  for (let i = 0; i < paramKeys.length; i++) {
    const key = paramKeys[i];
    const value = params[key];

    // 拼接 key=value,并处理 URL 编码
    queryString += `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;

    // 如果不是最后一个参数,添加 &
    if (i < paramKeys.length - 1) {
      queryString += "&";
    }
  }

  // 3. 返回完整 URL(自动判断是否已有 '?')
  return url.includes('?') ? `${url}&${queryString}` : `${url}?${queryString}`;
}
//使用方法
/**
 * url : https://baidu.com
 * params: {}
 */
 const h5Params: Record<string, string | number> = {
      "orderId": orderId,
      "type": type,
    }

 const url = appendParamsToUrl(H5Link.partRefundPage, h5Params)

 // url --> https://baidu.com?orderId=1&type=1

更多关于HarmonyOS 鸿蒙Next中网址参数拼接方法,支持各种对象类型的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,使用URLSearchParams对象进行网址参数拼接。支持字符串、数值、布尔值等多种对象类型。通过append方法添加参数,自动处理编码和格式。例如:

let params = new URLSearchParams();
params.append('key1', 'value1');
params.append('key2', 123);
let url = 'https://example.com?' + params.toString();

生成URL为:https://example.com?key1=value1&key2=123

更多关于HarmonyOS 鸿蒙Next中网址参数拼接方法,支持各种对象类型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可以通过URLSearchParams类实现更简洁的URL参数拼接,支持多种对象类型。以下是一个优化的实现方式:

export function appendParamsToUrl(url: string, params: Record<string, any>): string {
  if (!params || Object.keys(params).length === 0) {
    return url;
  }

  const searchParams = new URLSearchParams();
  
  Object.entries(params).forEach(([key, value]) => {
    if (value !== null && value !== undefined) {
      searchParams.append(key, String(value));
    }
  });

  const queryString = searchParams.toString();
  if (!queryString) return url;

  const separator = url.includes('?') ? '&' : '?';
  return `${url}${separator}${queryString}`;
}

这个实现:

  1. 使用内置的URLSearchParams处理编码和拼接
  2. 支持任意类型参数(自动转换为字符串)
  3. 自动处理null和undefined值
  4. 保持URL格式正确性

适用于字符串、数字、布尔值等基本类型,符合HarmonyOS Next的开发规范。

回到顶部