This commit is contained in:
maplemei
2019-11-19 20:13:50 +08:00
parent e02db53b89
commit 1e9d58f0e6
93 changed files with 8300 additions and 8236 deletions

99
src/common/expand.js Normal file
View File

@@ -0,0 +1,99 @@
//拓展Array map方法
if (!Array.prototype.map) {
Array.prototype.map = function(i, h) {
var b, a, c, e = Object(this),
f = e.length >>> 0;
if (h) {
b = h
}
a = new Array(f);
c = 0;
while (c < f) {
var d, g;
if (c in e) {
d = e[c];
g = i.call(b, d, c, e);
a[c] = g
}
c++
}
return a
}
};
//拓展Array foreach方法
if (!Array.prototype.forEach) {
Array.prototype.forEach = function forEach(g, b) {
var d, c;
if (this == null) {
throw new TypeError("this is null or not defined")
}
var f = Object(this);
var a = f.length >>> 0;
if (typeof g !== "function") {
throw new TypeError(g + " is not a function")
}
if (arguments.length > 1) {
d = b
}
c = 0;
while (c < a) {
var e;
if (c in f) {
e = f[c];
g.call(d, e, c, f)
}
c++
}
}
};
//拓展Array filter方法
if (!Array.prototype.filter) {
Array.prototype.filter = function(b) {
if (this === void 0 || this === null) {
throw new TypeError()
}
var f = Object(this);
var a = f.length >>> 0;
if (typeof b !== "function") {
throw new TypeError()
}
var e = [];
var d = arguments[1];
for (var c = 0; c < a; c++) {
if (c in f) {
var g = f[c];
if (b.call(d, g, c, f)) {
e.push(g)
}
}
}
return e
}
};
//拓展Array find方法
if (!Array.prototype.find) {
Array.prototype.find = function(callback) {
return callback && (this.filter(callback) || [])[0];
};
}
//拓展Array findIndex方法
if (!Array.prototype.findIndex) {
Array.prototype.findIndex = function(predicate) {
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (predicate.call(thisArg, value, i, list)) {
return i;
}
}
return -1;
};
}

166
src/common/util.js Normal file
View File

@@ -0,0 +1,166 @@
/**
* 选中dom元素
*/
export function selector(el) {
return document.querySelector(el);
}
/**
* 警告提示
*/
export function warn() {
let arr = [];
for (var i = 0; i < arguments.length; i++) {
arr.push(`${i + 1}. ${arguments[i]}`);
}
console.warn(arr.join('\n'));
}
/**
* 安全拷贝数据
*/
export function safety(data) {
return JSON.parse(JSON.stringify(data));
}
/**
* 检测对象是否为数组
*/
export function isArray(obj) {
return Object.prototype.toString.call(obj) == "[object Array]";
}
/**
* 检测对象是否为函数
*/
export function isFunction(obj) {
return Object.prototype.toString.call(obj) == "[object Function]";
}
/**
* 转化为数字
*/
export function toNum(obj) {
obj -= 0;
isNaN(obj) && (obj = 0);
return obj;
}
/**
* 简单的深度合并
*/
export function deepMerge(obj1, obj2) {
let key;
for (key in obj2) {
// 如果target(也就是obj1[key])存在且是对象的话再去调用deepMerge否则就是obj1[key]里面没这个对象需要与obj2[key]合并
// 如果obj2[key]没有值或者值不是对象此时直接替换obj1[key]
obj1[key] =
obj1[key] &&
obj1[key].toString() === "[object Object]" &&
(obj2[key] && obj2[key].toString() === "[object Object]") ?
deepMerge(obj1[key], obj2[key]) :
(obj1[key] = obj2[key]);
}
return obj1;
}
/**
* 数组合并
*/
export function mergeArr(arr1, arr2, prop) {
let value = prop.value;
let result = [...arr2];
for (let i = 0; i < arr1.length; i++) {
let item = arr1[i];
if (!arr2.find(a => a[value] == item[value])) {
result.push(item);
}
}
return result;
}
export function watch(data) {
return new Promise((resolve, reject) => {
for (let key in data) {
let value = data[key];
Object.defineProperty(data, key, {
configurable: false, // 该状态下的属性描述符不能被修改和删除
enumerable: false, // 该状态下的属性描述符中的属性不可被枚举
get() {
return value;
},
set(newVal) {
if (newVal !== value) {
resolve(key, newVal, value);
value = newVal;
}
}
});
}
});
}
export function checkUserAgent() {
const ua = navigator.userAgent;
if (ua.indexOf('Mac OS') != -1) {
return 'mac';
}
return 'win';
}
export function IEVersion() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
if (isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if (fIEVersion == 7) {
return 7;
} else if (fIEVersion == 8) {
return 8;
} else if (fIEVersion == 9) {
return 9;
} else if (fIEVersion == 10) {
return 10;
} else {
return 6; //IE版本<=7
}
} else if (isEdge) {
return 'edge'; //edge
} else if (isIE11) {
return 11; //IE11
} else {
return -1; //不是ie浏览器
}
}
export function exchangeOptionsData(arr, { prop }){
let { disabled, children, optgroup, value } = prop;
let newArr = [], group;
for(let i = 0; i < arr.length; i++){
let item = arr[i];
newArr.push(item);
if(item[optgroup]){
group = item;
item[children] = [];
continue;
}
let child = item[children];
if(isArray(child)){
group = null;
item[optgroup] = true;
child.forEach(c => newArr.push(c));
continue;
}
if(group){
group[children].push(item);
}
}
return newArr;
}