欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分享几个js方法

程序员文章站 2022-05-15 12:37:32
...
//返回数组中的最大值。
const arrayMax = arr => Math.max(...arr);

//返回数组中的最小值
const arrayMin = arr => Math.min(...arr);

//将数组块划分为指定大小的较小数组。
const chunk = (arr, size) => Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size));

// 从数组中移除 falsey(false、null、 0、 ""、undefined和NaN) 值。
const compact = (arr) => arr.filter(Boolean);

//计算数组中特定值(value)的出现次数
const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0);

// 深拼合数组。递归拼合作为数组的每个元素。
const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v));

// 返回数组的所有不同值。去重
const distinctValuesOfArray = arr => [...new Set(arr)];

// 返回数组中的每个第 n 个元素。
const everyNth = (arr, nth) => arr.filter((e, i) => i % nth === 0);

// 正确返回字符串长度
function length(str) {
  return [...str].length;
}
// 获取路由参数
function getQueryString(name, search) {
  search = search || window.location.search;
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  var r = search.substr(1).match(reg);
  if (r !== null) {
    return decodeURIComponent(r[2]);
  }
  return '';
}

// 数组中对象取相同id的一条数据
function toHeavyFn(data, id) {
  if(Array.isArray(data)) {
    let i = 0, len = data.length;
    let arr = [];
    let obj = {};
    for(i; i < len; i ++) {
      if(!obj[data[i][id]]) {
        arr.unshift(data[i]);
        obj[data[i][id]] = `${i}`;
      }
    }
    return arr;
  }else {
    return '';
  }
}

// 	将数组中对象相同id的合并为对象中一项
function toMergeFn(data, id) {
  if(Array.isArray(data)) {
    let i = 0, len = data.length;
    let targetObj = {};
    let obj = {};
    for(i; i < len; i ++) {
      if(!obj[data[i][id]]) {
        targetObj['option'+i] = [...data[i]];
        obj[data[i][id]] = `${i}`;
      }else {
        targetObj['option'+i] = [data[i], ...targetObj['option'+i]];
      }
    }
    return targetObj;
  }
  return 'NOT ARRAY';
}

// 判断是否是windowsPhone
const deviceIsWindowsPhone = navigator.userAgent.indexOf('Windows Phone') >= 0;

// 判断是否是Android
const deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone;

// 判断是否是ios
const deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;

// 延时函数的执行
function debounce(func, delay) {
  let timer;
  return function (...args) {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

// 格式化银行卡号
function formattingBankCode(str) {
  let text = str;
  let rtn = '';
  let len = Math.floor(str.length / 4);
  for (let i = 0; i < len; i++) {
    rtn += text.substring(i * 4, i * 4 + 4) + ' ';
  }
  return rtn;
}

// 简单判定,未做月份及日期的判定
let dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;

//复杂判定
let dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;


相关标签: js方法