/**
* 对象数组分开提取数组
* 例:arr = [ arr = {
* {name:'小A',age:15,value:1000}, name: ['小A','小B','小C'],
* {name:'小B',age:21,value:2000}, ===> age: [15,21,35],
* {name:'小C',age:35,value:3000} value: [1000,2000,3000]
* ] }
*/
const arraySeparateOut = (arr) => {
if (!arr.length) {
return [];
}
const res = {};
const keys = Object.keys(arr[0]);
keys.map((key) => {
arr.map((el) => {
if (res.hasOwnProperty(key)) {
res[key].push(el[key]);
} else {
res[key] = [el[key]];
}
});
});
return res;
};
/**
* 获取数组中每个对象出现的次数转为Map返回
* 例:arr = [1,2,2,3,3,'c','c','c'] ===> Map() { 1=>1,2=>2,3=>2,'c'=>3 }
*/
const arrayGetItemNum = (arr) => {
let mapObj = new Map();
arr.map((el) => {
let num = mapObj.get(el);
if (num) {
mapObj.set(el, ++num);
} else {
mapObj.set(el, 1);
}
});
return mapObj;
};
/**
* b kb mb gb tb转换方法
* 参数介绍
* value 值
* curUnit 当前单位,假如传了1说明当前单位是KB的值,我会先*1024
* unit 是否返回单位,默认传转换后的单位,true:10 KB|false:10
* decimals 小数点保留几位,默认保留2位
*/
const formatBytes = (value, curUnit = 0, unit = true, decimals = 2) => {
if (unit) {
if (parseFloat(value) === 0) return '0 B';
} else {
if (parseFloat(value) === 0) return '0';
}
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
curUnit > 0 ? (value = value * 1024 * curUnit) : null;
const i = Math.floor(Math.log(value) / Math.log(k));
return unit
? parseFloat((value / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
: parseFloat((value / Math.pow(k, i)).toFixed(dm));
};
/**
* 数组置顶移动 arr数组 index位置 many置顶数量|非必填,超过数组长度默认取取全部
* arrayUnshift([1,2,3,4,5],3) ==> [4,5,1,2,3]
* arrayUnshift([1,2,3,4,5],2,1) ==> [3,1,2,4,5]
* arrayUnshift([1,2,3,4,5],2,0) ==> [1,2,3,4,5] 0的话没有元素置顶,就是原来的数组
*/
function arrayUnshift(arr, index, many) {
let _arr = JSON.parse(JSON.stringify(arr));
const spl = _arr.splice(index, many ?? _arr.length - index);
_arr.unshift(...spl);
return _arr;
}
/**
* 判断一个数组是否包含另一个数组
* 如果arr1包含arr2的所有元素,返回2
* 如果arr1包含arr2的部分元素,返回1
* 如果arr1不包含arr2的任何元素,返回0
*/
const arrayCheckContain = (arr1, arr2) => {
const existArr = arr1.filter(item => arr2.includes(item));
const notExistArr = arr1.filter(item => !arr2.includes(item));
if (existArr.length === arr1.length) {
return 2;
} else if (existArr.length > 0) {
return 1;
} else {
return 0;
}
}
此页面不支持夜间模式!
已进入夜间模式!
已进入普通模式!
搜索框不允许为空
签到成功!经验+5!芋圆币+2!
签到失败!今日已签到!
需要登录社区账号才可以进入!