/*
 * @Description:
 * @Version: 1.0.0
 * @Autor: zenghaoming
 * @Date: 2023-11-01 14:36:06
 * @LastEditors: zenghaoming
 * @LastEditTime: 2023-11-06 13:18:50
 */
// 路由参数替换函数
export const replaceRouting = (routing: string, parameter: { [key: string]: string }) => {
  for (const key in parameter) {
    // 校验是否空
    if (!key || !parameter[key]) continue;
    const replaceValue = ':' + key;
    // 校验routing中是否含有对应的占位符
    if (routing.indexOf(replaceValue) === -1) continue;
    // routing替换
    routing = routing.replace(new RegExp(replaceValue, 'g'), parameter[key]);
  }
  return routing;
};

// 生成ID随机字符串
export const randomStr = (len = 6) =>
  Math.random()
    .toString(36)
    .slice(2, len + 2)
    .padEnd(len, Math.floor(Math.random() * 10) + '');

// 生成ID
export const createId = (group = 3, len = 6) => {
  // 当前时间戳转36字符 + 随机生成的5位36进制字符 + 随机生成的5位36进制字符
  let arr = [Date.now().toString(36)];
  for (let i = group - 1; i >= 0; i--) {
    arr.push(randomStr(len));
  }
  // 重新打乱数组顺序
  arr = shuffle(arr);
  //
  return arr.join('-');
};

// 洗牌算法，随机打乱数组
export const shuffle = (arr: Array<any>) => {
  for (let i = arr.length - 1; i >= 0; i--) {
    const randomIndex = Math.floor(Math.random() * (i + 1));
    const itemAtIndex = arr[randomIndex];
    arr[randomIndex] = arr[i];
    arr[i] = itemAtIndex;
  }
  return arr;
};
