//数组对象去重
function quchong(arr){
var obj = {};
arr = arr.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
return arr
}
// 防抖 多次事件变成最后一次
function jieliu(fn,wait){
let sTime = 0,eTime
return ()=>{
eTime = Date.now()
if(eTime-sTime < wait) return
fn()
sTime = eTime
}
}
// 节流 多次事件变成间隔一段时间执行一次
function fangdou(fn,wait){
let timer = null
return ()=>{
clearTimeout(timer)
setTimeout(fn,wait)
}
}
// 图片 base64
base64(url){
return new Promise((resolve, reject) => {
wx.getFileSystemManager().readFile({
filePath: url,
encoding: 'base64',
success: res => {
resolve('data:image/jpeg' + ';base64,' + res.data)
},
fail: res => reject(res.errMsg)
})
})
}
urlTobase64(url) {
return new Promise((resolve, reject) => {
var toBase64Url;
uni.request({
url: url,
method: 'GET',
responseType: 'arraybuffer',
success: async res => {
let base64 = uni.arrayBufferToBase64(res.data);
toBase64Url = 'data:image/jpeg;base64,' + base64;
resolve(toBase64Url)
},
fail: res => reject(res.errMsg)
});
})
}
getByteLen = (val)=> {
var len = 0;
if(!val){
return len;
}
for (var i = 0; i < val.length; i++) {
if(!val[i]){
continue;
}
// 全角
if (val[i].match(/[^\x00-\xff]/ig) != null){
len += 2;
}else{
len += 1;
}
}
return len;
};
/**
* 处理操作列展示信息
*/
cutStrByte = (str, len)=>{
//校验参数
if(!str || !len){
return {"cutStr":"","code":0};
}
var code = "1",// 默认返回code值,已截断
strLen = str.length,// 原字符串长度
cutStr;
//如果字符串长度小于截取长度的一半,则返回全部字符串
if (strLen <= len/2){
cutStr = str;
code = "0";
}else{
//遍历字符串
var strByteCount = 0;
for (var i = 0; i < strLen ; i++ ){
//中文字符字节加2 否则加1
strByteCount += this.getByteLen(str.charAt(i));
//i从0开始 截断时大于len 只截断到第i个
if(strByteCount > len){
cutStr = str.substring(0, i);
break;
}else if(strByteCount == len){
cutStr = str.substring(0, i + 1);
break;
}
}
}
//cutstr为空,没有截断字符串
if (!cutStr){
cutStr = str;
code = "0";
}
return {"cutStr":cutStr, "code":code};
}