1.数组去重
function unique(arr,item=null) {
for(let i = 0; i < arr.length; i++){
for(let j = i + 1; j < arr.length; j++){
if(item) {
if(arr[i][item] === arr[j][item]){
arr.splice(j, 1);
j--;
}
}else {
if(arr[i] === arr[j]){
arr.splice(j, 1);
j--;
}
}
}
}
return arr;
};
let arr = [{item:1},{item:1},{item:2},{item:2},{item:3},{item:4}]
console.log(unique(arr,'item'))
2.模糊查询
function fuzzyQuery(list,item,name) {
var arr = [];
var reg = new RegExp(name);
for(var i = 0; i < list.length; i++) {
if(reg.test(list[i][item])) {
arr.push(list[i])
}
}
return arr;
}
var list = [{name:'张一一'},{name:'张三三'},{name:'李三三'}]
console.log(fuzzyQuery(list,'name','三三'))
3.数组排序
function sorting(arr,item = null) {
if(item) {
for(var i = 0; i < arr.length - 1; i++) {
for(var j = 0; j < arr.length - 1 - i; j++) {
if(arr[j][item] > arr[j+1][item]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}else {
for(var i = 0; i < arr.length - 1; i++) {
for(var j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j+1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
return arr;
}
var arr = [{num:1},{num:6},{num:3},{num:5}];
console.log(sorting(arr,num))
4.排序
let arr = [{item: 2},{item: 1},{item: 3}];
arr.sort((a,b) => a.item - b.item);
let arr = [{item: 'B'},{item: 'A'},{item: 'C'}];
arr.sort((a, b) => a.item.charCodeAt() - b.item.charCodeAt())
5.取出数组中相同类型数据生成集合
let arr = [
{name: '张三', label: 'Z'},
{name: '李四', label: 'L'},
{name: '张显圣', label: 'Z'},
{name: '张无忌', label: 'Z'},
{name: '刘晓冉', label: 'L'},
{name: '白先生', label: 'B'},
]
arr.sort((a, b) => a.label.charCodeAt() - b.label.charCodeAt())
let obj = {};
arr.map(item => {
if(!obj[item.label]) {
obj[item.label] = [item]
} else {
obj[item.label].push(item)
}
})
console.log(obj)
6.生成时间段列表
function getTimeList(startTime,endTime,interval,splice) {
let timeList = [];
let startDate = new Date().setHours(startTime.split(':')[0],startTime.split(':')[1]);
let endDate = new Date().setHours(endTime.split(':')[0],endTime.split(':')[1]);
let count = (endDate - startDate) / 1000 / 60 / interval;
let date = new Date(startDate);
for(let i = 0; i < count; i++) {
timeList.push({});
timeList[i].startTime = date.getHours() + ':' + (date.getMinutes() > 9? date.getMinutes() : ('0' + date.getMinutes()));
date.setMinutes(date.getMinutes() + interval);
timeList[i].endTime = date.getHours() + ':' + (date.getMinutes() > 9? date.getMinutes() : ('0' + date.getMinutes()));
}
if(splice){
for(var i = 0; i < timeList.length; i++) {
if(timeList[i].endTime > endTime) {
timeList.splice(i,1)
}
}
}
return timeList;
}
console.log(getTimeList('8:00','18:00',30))
7.超出规定字节后显示省略号
function getByteLen(str, num){
let len=0;
let arr = [];
for(let i=0;i<str.length;i++){
str.charCodeAt(i)<256?(len+=1):(len+=2)
arr.push(str[i])
if(len >= num) break;
}
return arr.join('') + '...';
}
8.使html字符串中图片的宽高自适应
function formatRichText(html) {
let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
return match;
});
newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
return match;
});
newContent = newContent.replace(/<br[^>]*\/>/gi, '');
newContent = newContent.replace(/\<img/gi,'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"');
return newContent;
}
9.一维数组转二维数组
function formatArr(arr, num) {
let newArr = []
const total = Math.ceil(arr.length / num)
for (let i = 0; i < total; i++) {
a = arr.slice(i * num, (i + 1) * num)
newArr.push(a)
}
return newArr
}
let arr = [1, 2, 3, 4, 5, 6, 7, 8]
console.log(formatArr(arr, 4));
10.elementUI 树形表格更新子节点数据
refreshRow(pId){
listClassify({pId: id}).then(res => {
if(res.data.length) {
res.data.forEach(item => {
item.level = this.form.level;
})
}
this.$set(this.$refs.table.store.states.lazyTreeNodeMap, pId, res.data)
})
},
11.获取url后面的参数
new URLSearchParams(window.location.search).get('参数名')
12.解决若依上传图片多选不生效的问题
handleUploadSuccess(res, file, fileList) {
if(fileList.every(it => it.status == 'success')) {
fileList.map(item => {
item.response && this.fileList.push({ name: item.response.fileName, url: item.response.url });
})
console.log(fileList, this.fileList);
this.$emit("input", this.listToString(this.fileList));
this.loading.close();
}
},