1 // 前端js公共方法集 2 3 export default { 4 // 配合element-ui更佳 5 6 /* 7 element时间修正 8 参数:要修正的时间 9 */ 10 fixDateTime(val) { 11 return new Date(Date.parse(new Date(val)) + 8 * 3600 * 1000) 12 }, 13 14 /* 15 附件格式过滤 16 参数:1.el-upload的file,2.接受的文件类型后缀数组,如['.zip', 'png'],区分大小写 17 */ 18 filterFile(file, arr) { 19 let fileSize = file.size / 1000 / 1000 20 if (fileSize > 25) { 21 console.log('文件大小不能超过25M!') 22 return false; 23 } 24 let fileName = file.name.lastIndexOf(".");//取到文件名开始到最后一个点的长度 25 let fileNameLength = file.name.length;//取到文件名长度 26 let fileFormat = '.' + file.name.substring(fileName + 1, fileNameLength); 27 if (arr.indexOf(fileFormat) > -1) { 28 return true 29 } else { 30 console.log('文件格式不对!') 31 return false 32 } 33 }, 34 35 /* 36 数组去重 37 参数:1.待去重数组,2.过滤依据唯一key|对象数组时必须,String类型 38 */ 39 filterArr(arr, key) { 40 let newArr = [] 41 let tempArr = [] 42 arr.forEach(item => { 43 let value = key ? item[key] : item 44 if (tempArr.indexOf(value) < 0) { 45 newArr.push(item) 46 tempArr.push(value) 47 } 48 }); 49 return newArr 50 }, 51 52 /* 53 数组排序 54 参数:1.待排序数组,2.是否升序(默认是),3.排序规则|0为数字(默认),1为字符串|非必须,4.排序依据唯一key|对象数组时必须,String类型 55 */ 56 sortArr(arr, bool = true, rule = 0, key) { 57 if (bool) { 58 if (key) { 59 if (rule == 0) { 60 return arr.sort((a, b) => a[key] - b[key]) 61 } else { 62 return arr.sort((a, b) => { 63 return a[key].localeCompare(b[key]) 64 }) 65 } 66 } else { 67 if (rule == 0) { 68 return arr.sort((a, b) => a - b) 69 } else { 70 return arr.sort((a, b) => { 71 return a.localeCompare(b) 72 }) 73 } 74 } 75 } else { 76 if (key) { 77 if (rule == 0) { 78 return arr.sort((b, a) => a[key] - b[key]) 79 } else { 80 return arr.sort((b, a) => { 81 return a[key].localeCompare(b[key]) 82 }) 83 } 84 } else { 85 if (rule == 0) { 86 return arr.sort((b, a) => a - b) 87 } else { 88 return arr.sort((b, a) => { 89 return a.localeCompare(b) 90 }) 91 } 92 } 93 } 94 }, 95 96 /* 97 对象数组添加字段 98 参数:1.待添加数组,2.待添加字段key,3.待添加value|非必须,默认为null 99 */ 100 addFieldArr(arr, key, value = null) { 101 return arr.map(item => { 102 let obj = { 103 ...item 104 } 105 obj[key] = value 106 return obj 107 }) 108 }, 109 110 /* 111 对象数组合并相同key的data 112 参数:1.待操作数组,2.参考key,3.待合并key 113 */ 114 mergeKeyArr(arr, key1, key2) { 115 arr = this.sortArr(arr, true, 1, key1) 116 let newArr = [] 117 let tempValue = 0 // 临时存储数据 118 let curName = arr[0][key1] 119 // 合并相同curName的数据 120 arr.forEach((item, index) => { 121 if (item[key1] === curName) { 122 tempValue += item[key2] 123 } else { 124 let obj = { 125 ...arr[index - 1] 126 } 127 obj[key2] = tempValue 128 newArr.push(obj) 129 curName = item[key1] 130 tempValue = item[key2] 131 } 132 }) 133 let obj = { 134 ...arr[arr.length - 1] 135 } 136 obj[key2] = tempValue 137 newArr.push(obj) 138 return newArr 139 }, 140 141 /* 142 生成a-b随机数(默认0-255) 143 参数:1.最小值|非必须,2.最大值|非必须 144 */ 145 randomNumber(a = 0, b = 255) { 146 return Math.round(a + Math.random() * (b - a)) 147 }, 148 149 /* 150 生成随机rgb三颜色 151 参数:1.是否可透明|非必须 152 */ 153 randomColor(bool) { 154 if (bool) { 155 return `rgba(${this.randomNumber()}, ${this.randomNumber()}, ${this.randomNumber()}, .${this.randomNumber(0, 99)})` 156 } else { 157 return `rgb(${this.randomNumber()}, ${this.randomNumber()}, ${this.randomNumber()})` 158 } 159 }, 160 }
更新日期:2020/12/25,如有错误,欢迎指出!