常用的工具类记录

113 阅读2分钟

持续更新中...

1. every和some

相同点:every和some都有三个参数,即item-当前项,index-当前项的索引值,array-[数组]本身;都可循环遍历数组

不同点:
every相当于逻辑关系中的且,只有所有参数都满足条件时,才返回true,一旦有一个不满足,则逻辑中断,返回false;
some相当于逻辑关系中的或,只要有一个参数满足条件,就中断遍历,返回true,若遍历完所有参数,没有符合的项,返回false。
通俗一点就是 every:一假即假,some:一真即真

some

// 一真即真,有一个参数满足条件就返回true
let arr = [ 1, 2, 3, 4, 5, 6 ];
let result = arr.some((item, index) => item > 5)
console.log(result) // true

every

// 一假即假,有一个参数不满足条件就返回false
let arr = [ 1, 2, 3, 4, 5, 6 ];
let result = arr.every((item, index) => item > 5)
console.log(result) // false

some 循环遍历找符合条件的值,一旦找到,则不会继续迭代下去。
every 循环遍历是否符号条件,一旦有一个不符合条件,则不会继续迭代下去。

2. 数字字符串格式化,显示成千分位逗号

function solution(num) {
    // 去除前导零
    num = parseFloat(num).toString();
    
    // 分离整数部分和小数部分
    let [integerPart, decimalPart] = num.split('.');
    
    // 处理整数部分的千分位逗号
    let re = /(\d)(?=(\d{3})+(?!\d))/g;
    integerPart = integerPart.replace(re, '$1,');
    
    // 合并整数部分和小数部分
    return decimalPart ? `${integerPart}.${decimalPart}` : integerPart;
}

function main() {
    console.log(solution("-00.12412")); // 预期输出: '-0.12412'
    console.log(solution("-1294512.12412")); // 预期输出: '1,294,512.12412'
    console.log(solution("0000123456789.99")); // 预期输出: '123,456,789.99'
    console.log(solution("0000123456789.9900")); // 预期输出: '123,456,789.99'
    console.log(solution("987654321")); // 预期输出: '987,654,321'
    console.log(solution("0098765432100")); // 预期输出: '98,765,432,100'
}

main();

3. 遍历树形结构(Tree),根据id找到对应的name(递归)

/**
 * 遍历树形结构(Tree),根据id找到对应的name(递归)
 * @param treeData
 * @param id
 * @param idField
 * @param nameField
 * @returns {*|null}
 */
export function getTreeName(treeData, id, idField = 'id', nameField = 'name') {
  for (let i = 0; i < treeData.length; i++) {
    let row = treeData[i]
    if (row[idField] === id) {
      return row[nameField]
    } else {
      if (row.children && row.children.length > 0) {
        let res = getTreeName(row.children, id, idField, nameField)
        if (res) {
          return res
        }
      }
    }
  }
  return null
}

4.momentJS的一些常用方法

1.isBetween

const now = this.$moment()
const start = this.$moment(startTime)
const end = this.$moment(endTime)

// 使用 isBetween 方法,第四个参数 '[]' 表示包含开始和结束时间
return now.isBetween(start, end, null, '[]')

具体含义如下:
now 是当前时间的 moment 对象
start 是开始时间的 moment 对象 end 是结束时间的 moment 对象
第三个参数 null 表示使用默认的时间单位
第四个参数 '[]' 表示时间范围的包含方式

关于 '[]' 参数的详细说明:
'[]' 表示包含开始时间和结束时间,即闭区间 [start, end]
'()' 表示不包含开始时间和结束时间,即开区间 (start, end)
'[)' 表示包含开始时间但不包含结束时间,即左闭右开区间 [start, end)
'(]' 表示不包含开始时间但包含结束时间,即左开右闭区间 (start, end]