分享几个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)$/;
上一篇: java压缩文件
下一篇: java 压缩文件的编码问题