123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- export const stringify = (json) => {
- let count = 0;
- let list = [];
- let str = JSON.stringify(json, function (key, val) {
- if (typeof val === 'function') {
- list.push(val + '');
- const result = '$code{' + count + '}$code'
- count = count + 1;
- return result
- }
- return val;
- }, 2);
- let startCode = '$code{';
- let endCode = '}$code';
- list.forEach((ele, index) => {
- str = str.replace(startCode + index + endCode, startCode + ele + endCode)
- })
- for (let i = 0; i < count; i++) {
- str = str.replace('"' + startCode, '').replace(endCode + '"', '')
- }
- return str
- }
- export function getAsVal(obj, bind = '') {
- let result = deepClone(obj)
- if (validatenull(bind)) return result
- bind.split('.').forEach(ele => {
- if (!validatenull(result[ele])) {
- result = result[ele]
- } else {
- result = ''
- }
- });
- return result
- }
- export function validatenull(val) {
- if (val instanceof Date || typeof val === 'boolean' || typeof val === 'number') return false;
- if (val instanceof Array) {
- if (val.length === 0) return true;
- } else if (val instanceof Object) {
- for (var o in val) {
- return false;
- }
- return true;
- } else {
- if (
- val === 'null' ||
- val == null ||
- val === 'undefined' ||
- val === undefined ||
- val === ''
- ) {
- return true;
- }
- return false;
- }
- return false;
- }
- export const deepClone = data => {
- var type = getObjType(data);
- var obj;
- if (type === 'array') obj = [];
- else if (type === 'object') obj = {};
- else return data;
- if (type === 'array') {
- for (var i = 0, len = data.length; i < len; i++) {
- data[i] = (() => {
- if (data[i] === 0) {
- return data[i];
- }
- return data[i];
- })();
- if (data[i]) {
- delete data[i].$parent;
- }
- obj.push(deepClone(data[i]));
- }
- } else if (type === 'object') {
- for (var key in data) {
- if (data) {
- delete data.$parent;
- }
- obj[key] = deepClone(data[key]);
- }
- }
- return obj;
- };
- export const getObjType = obj => {
- var toString = Object.prototype.toString;
- var map = {
- '[object Boolean]': 'boolean',
- '[object Number]': 'number',
- '[object String]': 'string',
- '[object Function]': 'function',
- '[object Array]': 'array',
- '[object Date]': 'date',
- '[object RegExp]': 'regExp',
- '[object Undefined]': 'undefined',
- '[object Null]': 'null',
- '[object Object]': 'object'
- };
- if (obj instanceof Element) {
- return 'element';
- }
- return map[toString.call(obj)];
- };
- /**
- * 是否小于等于某个Avue版本
- * Avue:2.8.27 v2:2.8.27 -> true
- * Avue:2.9.1 v2:2.9.0 -> false
- */
- export const avueVersion = (v2) => {
- if (!window.AVUE) return
- let v1 = window.AVUE.version.split('.')
- v2 = v2.split('.')
- const len = Math.max(v1.length, v2.length)
- // 调整两个版本号位数相同
- while (v1.length < len) {
- v1.push('0')
- }
- while (v2.length < len) {
- v2.push('0')
- }
- // 循环判断每位数的大小
- for (let i = 0; i < len; i++) {
- const num1 = parseInt(v1[i])
- const num2 = parseInt(v2[i])
- if (num1 > num2) {
- return false
- } else if (num1 < num2) {
- return true
- }
- }
- return true
- }
|