const baseFindIndex = function(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while ((fromRight ? index-- : ++index < length)) { if (predicate(array[index], index, array)) { return index; } } return -1; } const filterByKey = function(objs,keys) { objs = objs || []; var newObjs = []; for (var i = 0, n = objs.length; i < n; i++) { var obj = objs[i]; // 对象则在筛选时将键名替换 var newObj = {}; if(typeof keys === 'object'){ for (var name in keys) { if(Array.isArray(keys[name])){ // 数组第1个为字段名,第2个为函数,返回的值将覆盖新对象 newObj[keys[name][0]] = keys[name][1](obj); }else{ newObj[keys[name]] = obj[name]; } } }else{ for (let j = 0, n = keys.length; j < n; j++) { var key = keys[j]; newObj[key] = obj[key]; } } newObjs.push(newObj); } return newObjs; } const createRangeMethod = function(ranges,compareFun) { return function (curr) { var index = -1; for (var i = 0, n = ranges.length; i < n; i++) { if(compareFun(curr, ranges[i],i)) index = i; } return index; } } const debounce = function (func, wait) { var timer; return function () { var context = this,args = arguments; clearTimeout(timer); timer = setTimeout(function () { func.apply(context, args); }, wait); } } // 生成uuid const uuid = function () { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); } // debug函数,关联配置 const debug = function (message,config?) { } // base64图片大小 const base64ImageSize = function (base64Image) { var str = base64Image.substring(22).replace('=',''); // 去除头部 var strLength = parseInt(str.length); var fileLength = strLength - (strLength/8) *2; return fileLength; } export const utils = { baseFindIndex, filterByKey, createRangeMethod, debounce, uuid, debug, base64ImageSize }