vue项目常用utils工具函数

这篇笔记总结了Vue开发中的一些实用技巧,包括遍历树形数据并删除空children,数组扁平化与去重以适应el-cascader组件,数值保留两位小数的方法,日期加法及时间戳转换为日期格式,以及递归拉平树形数据的函数。这些技巧对于提升开发效率和代码质量非常有帮助。
摘要由CSDN通过智能技术生成

个人笔记帖–持续记录

1.遍历树形数据,删除其空children项

问题:编写联级选择器时后端每层都有children,空的children也返回了,导致显示空选项
解决方案:过滤空children
解决代码:【vue】遍历树形数据,删除其空children项

2.数组扁平化+去重

场景:el-cascader级联选择器change事件的数据并不是我想要的数据,需要扁平化并且去重一下

			<el-cascader
            v-model="cascaderData"
            :options="deptOptions"
            :props="{ multiple: true,value:'deptId',label:'deptName',children:'childList' }"
            collapse-tags
            clearable
            @change="change"></el-cascader>

代码:

// methods里写方法:
getFlatRDSort(arr) {
  return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => { return a - b })
}
// 在el-casher 的change事件里使用
  change(val) {
 // 此时val数据大概是这样子:[[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]
      if (val && val.length) {
       this.cascaderData=this.getFlatRDSort(val)
      }
    },
console.log(getFlatRDSort(arr));

3.小数保留两位小数

    // 处理小数保留两位小数
    handleDecimal(val) {
      return Math.round(val * 10000) / 100.00
    }

4.日期加法+时间戳转日期

需求:输入框用户输入1传给后台的需要是1天后的数据 输入n就是n天后的日期
比如 当前日期是2022-09-13 用户输入5 则传给后端2022-09-18

	let num = 5 // 用户输入天数
	let time = this.formatDate(60 * 60 * 24 * num * 1000 + new Date().getTime())
	console.log(time) // 此时得到的是5天后的时间戳 需要处理成年月日格式
    // 时间戳转yyyy-mm-dd格式
    formatDate(datetime) {
      let date = new Date(datetime) //datetime时间戳为13位毫秒级别,如为10位需乘1000
      let month = ('0' + (date.getMonth() + 1)).slice(-2)	// getMonth是从1-11,所以需要加1
      let sdate = ('0' + date.getDate()).slice(-2)	// -2表示从倒数第二个元素开始截取
      let thatDate = date.getFullYear() + '-' + month + '-' + sdate + ' '
      return thatDate
    }

5.拉平树形数据

	// 递归拉平有childList的树形数据
    recursion(arr) {
      return [].concat(...arr.map(item => {
        if (item.childList) {
          let arr = [].concat(item, ...this.recursion(item.childList))
          delete item.childList
          return arr
        }
        return [].concat(item)
      }
      ))
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值