123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- import debounce from './Debounce'
- export default class Helpers {
- constructor(Dcat) {
- Dcat.helpers = this;
- // 延迟触发,消除重复触发
- this.debounce = debounce;
- }
- /**
- * 获取json对象或数组的长度
- *
- * @param obj
- * @returns {number}
- */
- len(obj) {
- if (typeof obj !== 'object') {
- return 0;
- }
- let i, len = 0;
- for(i in obj) {
- len += 1;
- }
- return len;
- }
- /**
- * 判断变量或key是否存在
- *
- * @param _var
- * @param key
- * @returns {boolean}
- */
- isset(_var, key) {
- let isset = (typeof _var !== 'undefined' && _var !== null);
- if (typeof key === 'undefined') {
- return isset;
- }
- return isset && typeof _var[key] !== 'undefined';
- };
- empty(obj, key) {
- return !(this.isset(obj, key) && obj[key]);
- };
- /**
- * 根据key获取对象的值,支持获取多维数据
- *
- * @param arr
- * @param key
- * @param def
- * @returns {null|*}
- */
- get(arr, key, def) {
- def = null;
- if (this.len(arr) < 1) {
- return def;
- }
- key = String(key).split('.');
- for (var i = 0; i < key.length; i++) {
- if (this.isset(arr, key[i])) {
- arr = arr[key[i]];
- } else {
- return def;
- }
- }
- return arr;
- }
- /**
- * 判断key是否存在
- *
- * @param arr
- * @param key
- * @returns {def|boolean}
- */
- has(arr, key) {
- if (LA.len(arr) < 1) return def;
- key = String(key).split('.');
- for (var i = 0; i < key.length; i++) {
- if (LA.isset(arr, key[i])) {
- arr = arr[key[i]];
- } else {
- return false;
- }
- }
- return true;
- }
- /**
- * 判断元素是否在对象中存在
- *
- * @param arr
- * @param val
- * @param strict
- * @returns {boolean}
- */
- inObject(arr, val, strict) {
- if (this.len(arr) < 1) {
- return false;
- }
- for (var i in arr) {
- if (strict) {
- if (val === arr[i]) {
- return true;
- }
- continue
- }
- if (val == arr[i]) {
- return true;
- }
- }
- return false;
- }
- // 判断对象是否相等
- equal(array, array2, strict) {
- if (!array || !array2) {
- return false;
- }
- let len1 = this.len(array),
- len2 = this.len(array2), i;
- if (len1 != len2) {
- return false;
- }
- for (i in array) {
- if (! this.isset(array2, i)) {
- return false;
- }
- if (array[i] === null && array2[i] === null) {
- return true;
- }
- if (typeof array[i] == 'object' && typeof array2[i] == 'object') {
- if (! this.equal(array[i], array2[i], strict))
- return false;
- }
- else if (array[i] != array2[i]) {
- return false;
- }
- }
- return true;
- }
- // 字符串替换
- replace(str, replace, subject) {
- if (!str) {
- return str;
- }
- return str.replace(
- new RegExp(replace, "g"),
- subject
- );
- }
- }
|