工具函數封裝:深度獲取對象的值、深拷貝對象、去除數組對象中的重複對象、驗證手機號、取小數點

// (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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章