工具函数封装:深度获取对象的值、深拷贝对象、去除数组对象中的重复对象、验证手机号、取小数点

// (1)深度获取深层对象的值
const deepGet = (object, path, defaultValue) => {
  return (!Array.isArray(path) ? path.replace(/\[/g, '.').replace(/\]/g, '').split('.') : path)
          .reduce((o, k) => (o || {})[k], object) || defaultValue;
}

// (2)验证手机号码
const isValidPhone = (str) => {
  var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
  if (!myreg.test(str)) {
    return false;
  } else {
    return true;
  }
}

// (3)取小数点
const toFix = (num1, num2) => {
  if(typeof(num1)=='undefined'){
      return num1
  }else{
      return Number(num1.toFixed(num2))
  }
}

/**
 * 
 * @param {*Object} obj (4)去掉数组对象中的重复对象
 */
const deteleObject = (obj) => {
  var uniques = [];
  var stringify = {};
  for (var i = 0; i < obj.length; i++) {
      var keys = Object.keys(obj[i]);
      keys.sort(function(a, b) {
          return (Number(a) - Number(b));
      });
      var str = '';
      for (var j = 0; j < keys.length; j++) {
          str += JSON.stringify(keys[j]);
          str += JSON.stringify(obj[i][keys[j]]);
      }
      if (!stringify.hasOwnProperty(str)) {
          uniques.push(obj[i]);
          stringify[str] = true;
      }
  }
  uniques = uniques;
  return uniques;
}


/**
 * 
 * @param {*Array} arr (5)数组对象深拷贝
 */
function deepCopy(arr) {
  let copyArr = (arr.constructor === Array) ? [] : {}; // 判断是数组还是对象
  for(let i in arr) {
      if(typeof arr[i] === 'object') {   // 判断是值类型还是引用类型
          copyArr[i] = deepCopy(arr[i]);  // 引用类型的话进行递归操作
      } else {
          copyArr[i] = arr[i];  // 值类型直接赋值
      }
  }
  return copyArr;
}

 

你可能感兴趣的:(工具函数)