积累js日常常用工具类函数(持续更新中。。。)

本文介绍了JavaScript中的五个实用函数,包括获取当前周、数字转汉字、计算总天数对应的年月天数、查找字符串中最频繁的字符以及判断对象是否为空的方法。
摘要由CSDN通过智能技术生成

1、获取周

// 第一种
export function getDay() {
    var today = new Date();
    var dayOfWeek = today.getDay();
    switch (dayOfWeek) {
        case 0:
            return '周日'
            break;
        case 1:
            return '周一'
            break;
        case 2:
            return '周二'
            break;
        case 3:
            return '周三'
            break;
        case 4:
            return '周四'
            break;
        case 5:
            return '周五'
            break;
        case 6:
            return '周六'
            break;
    }

}

// 第二种
export function week() {
      return "周" + "日一二三四五六".charAt(new Date().getDay());
},

2、数字转汉字

export const numberToChinese =(num)=>{
  const chineseNumArr = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  const chineseUnitArr = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '兆'];
  let chineseStr = '';
  let unit = 0;
  let hasNonZero = false; // 用于标记是否遇到过非零数字

  if (num === 0) {
    return '零';
  }

  while (num > 0) {
    const digit = num % 10;
    console.log('digit: ', digit);
    if (digit !== 0) {
      chineseStr = chineseNumArr[digit] + chineseUnitArr[unit] + chineseStr;
      hasNonZero = true;
    } else {
      if (hasNonZero) { // 只有在遇到过非零数字之后才添加零
        chineseStr = chineseNumArr[digit] + chineseStr;
      }
    }
    num = Math.floor(num / 10);
    unit++;
  }

  return chineseStr;
}

3、总天数转成年月天数(用了上面转汉字的函数)

export const  daysToYearsMonthsDays = (days)=>{
  const years =
    Math.floor(days / 365) > 0
      ? numberToChinese(Math.floor(days / 365)) + '年'
      : ''
  console.log('years: ', years)
  const remainingDays = days % 365
  console.log('remainingDays: ', remainingDays)
  const months =
    Math.floor(remainingDays / 30) > 0
      ? numberToChinese(Math.floor(remainingDays / 30)) +
        '个月'
      : ''
  console.log('months: ', months)
  const daysLeft =
    remainingDays % 30 > 0
      ? numberToChinese(Math.ceil(remainingDays % 30)) + '天'
      : ''
  console.log('daysLeft: ', daysLeft)
  return years + months + daysLeft
}

4、寻找字符串中出现最多的字符怎么实现

(1)字符串遍历 + for... in 循环对比

function findMostFrequentChar(str) {
  // 创建一个空对象来存储字符出现的次数
  const charCount = {};
  
  // 遍历字符串,统计每个字符出现的次数
  for (let char of str) {
    charCount[char] = (charCount[char] || 0) + 1;
  }
  
  // 找到出现次数最多的字符和次数
  let maxChar = '';
  let maxCount = 0;
  
  for (let char in charCount) {
    if (charCount[char] > maxCount) {
      maxChar = char;
      maxCount = charCount[char];
    }
  }
  
  return { char: maxChar, count: maxCount };
}

const str = "hello world";
const result = findMostFrequentChar(str);
console.log(`最频繁出现的字符是 "${result.char}",出现了 ${result.count} 次。`);

(2)字符串遍历 + sort排序

function findMostFrequentChar(str) {
  // 创建一个空对象来存储字符出现的次数
  const charCount = {};
  
  // 遍历字符串,统计每个字符出现的次数
  for (let char of str) {
    charCount[char] = (charCount[char] || 0) + 1;
  }
  
  // 将字符出现次数存储到数组中
  const charCountArray = Object.entries(charCount);
  
  // 对字符出现次数进行排序
  charCountArray.sort((a, b) => b[1] - a[1]);
  
  // 获取出现次数最多的字符和次数
  const mostFrequentChar = charCountArray[0][0];
  const frequency = charCountArray[0][1];
  
  return { char: mostFrequentChar, count: frequency };
}

const str = "hello world";
const result = findMostFrequentChar(str);
console.log(`最频繁出现的字符是 "${result.char}",出现了 ${result.count} 次。`);

5、js 怎么判断对象为空

// (1) 使用 Object.keys() 方法:
function isEmpty(obj) {
  return Object.keys(obj).length === 0;
}
const obj = {};
console.log(isEmpty(obj)); // true
const obj2 = { name: 'John' };
console.log(isEmpty(obj2)); // false


// (2) 使用 for...in 循环:
function isEmpty(obj) {
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      return false;
    }
  }
  return true;
}
const obj = {};
console.log(isEmpty(obj)); // true
const obj2 = { name: 'John' };
console.log(isEmpty(obj2)); // false


// (3) 使用 JSON.stringify() 方法:
function isEmpty(obj) {
  return JSON.stringify(obj) === '{}';
}
const obj = {};
console.log(isEmpty(obj)); // true
const obj2 = { name: 'John' };
console.log(isEmpty(obj2)); // false

6、js 计算本周的开始和结束日期

// (1) 假设周一为一周的开始
function getCurrentWeekDates() {  
    const today = new Date();  
    const dayOfWeek = today.getDay(); // 0 (周日) 到 6 (周六)  
    
    // 如果你希望周一为一周的开始,可以调整 dayOfWeek  
    const mondayOffset = (dayOfWeek === 0 ? -6 : 1) - dayOfWeek; // 如果是周日,则往回推6天,否则往回推1天  
    const startOfWeek = new Date(today);  
    startOfWeek.setDate(today.getDate() + mondayOffset); // 设置为本周的开始日期(周一)  

    const endOfWeek = new Date(startOfWeek);  
    endOfWeek.setDate(startOfWeek.getDate() + 6); // 设置为本周的结束日期(周日)  

    return {  
        start: startOfWeek,  
        end: endOfWeek  
    };  
}  

const currentWeek = getCurrentWeekDates();  
console.log("本周开始日期:", currentWeek.start.toLocaleDateString());  
console.log("本周结束日期:", currentWeek.end.toLocaleDateString());  


// (2) 假设周日为一周的开始
function getCurrentWeekDates() {  
    const today = new Date();  
    const dayOfWeek = today.getDay(); // 0 (周日) 到 6 (周六)  

    const sundayOffset = -dayOfWeek; // 设置为本周的开始日期(周日)  
    const startOfWeek = new Date(today);  
    startOfWeek.setDate(today.getDate() + sundayOffset);   

    const endOfWeek = new Date(startOfWeek);  
    endOfWeek.setDate(startOfWeek.getDate() + 6); // 设置为本周的结束日期(周六)  

    return {  
        start: startOfWeek,  
        end: endOfWeek  
    };  
}  

const currentWeek = getCurrentWeekDates();  
console.log("本周开始日期:", currentWeek.start.toLocaleDateString());  
console.log("本周结束日期:", currentWeek.end.toLocaleDateString());  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值