js一些简单实用的方法

//数组对象去重
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};
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容