1. 数组相关

1.1 判断数组是否为空

/**
 * @description 判断数组是否为空
 * @param {Array} arr - 待判断的数组
 * @returns {Boolean} - 返回布尔值,true表示数组为空,false表示数组不为空
 */
function isArrayEmpty(arr) {
  return !Array.isArray(arr) || arr.length === 0;
}

1.2 数组去重

/**
 * @description 数组去重
 * @param {Array} arr - 待去重的数组
 * @returns {Array} - 返回去重后的新数组
 */
function uniqueArray(arr) {
  if (!Array.isArray(arr)) {
    return arr;
  }
  return [...new Set(arr)];
}

2. 字符串相关

2.1 判断字符串是否为空

/**
 * @description 判断字符串是否为空
 * @param {String} str - 待判断的字符串
 * @returns {Boolean} - 返回布尔值,true表示字符串为空,false表示字符串不为空
 */
function isStringEmpty(str) {
  return !str || str.trim().length === 0;
}

2.2 字符串首字母大写

/**
 * @description 字符串首字母大写
 * @param {String} str - 待转换的字符串
 * @returns {String} - 返回首字母大写后的新字符串
 */
function capitalize(str) {
  if (!str) {
    return str;
  }
  return str.charAt(0).toUpperCase() + str.slice(1);
}

3. 对象相关

3.1 判断对象是否为空

/**
 * @description 判断对象是否为空
 * @param {Object} obj - 待判断的对象
 * @returns {Boolean} - 返回布尔值,true表示对象为空,false表示对象不为空
 */
function isObjectEmpty(obj) {
  return !obj || Object.keys(obj).length === 0;
}

3.2 深拷贝对象

/**
 * @description 深拷贝对象
 * @param {Object} obj - 待拷贝的对象
 * @returns {Object} - 返回拷贝后的新对象
 */
function deepClone(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }
  let result;
  if (Array.isArray(obj)) {
    result = [];
    for (let i = 0; i < obj.length; i++) {
      result[i] = deepClone(obj[i]);
    }
  } else {
    result = {};
    for (let key in obj) {
      result[key] = deepClone(obj[key]);
    }
  }
  return result;
}

4. 数字相关

4.1 生成指定范围内的随机整数

/**
 * @description 生成指定范围内的随机整数
 * @param {Number} min - 随机整数的最小值
 * @param {Number} max - 随机整数的最大值
 * @returns {Number} - 返回生成的随机整数
 */
function randomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

4.2 数字千分位格式化

/**
 * @description 数字千分位格式化
 * @param {Number} num - 待格式化的数字
 * @returns {String} - 返回格式化后的字符串
 */
function formatNumber(num) {
  return num.toString().replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
}