export function randomNum(length) {
let ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
ALPHABET += 'abcdefghijklmnopqrstuvwxyz';
ALPHABET += '0123456789-_';
let str = '';
let i = 0;
while(i < length){
let rand = Math.floor(Math.random() * ALPHABET.length);
str += ALPHABET.substring(rand, rand + 1);
i++;
}
return str;
}
export function accuracyCalculation(passive,active,Symbol = '+'){
let passiveNumber = String(passive)
let activeNumber = String(active)
let passivCount = ''
let activeCount = ''
let Multiple = 1
let MultipleActive = 1
if(passiveNumber.indexOf('.') !== -1 || activeNumber.indexOf('.') !== -1){
if(passiveNumber.indexOf('.') !== -1) passivCount = passiveNumber.length - (passiveNumber.indexOf('.')+1)
if(activeNumber.indexOf('.') !== -1) activeCount = activeNumber.length - (activeNumber.indexOf('.')+1)
if(Symbol === '+' || Symbol === '-'){
let count = passivCount > activeCount ? passivCount : activeCount
for (let i = 0; i < count ; i++) Multiple = Multiple * 10
}else{
for (let i = 0; i < passivCount ; i++) Multiple = Multiple * 10
for (let i = 0; i < activeCount ; i++) MultipleActive = MultipleActive * 10
}
}
let result = ''
if(Symbol === '+') result = passive * Multiple + active * Multiple
else if(Symbol === '-') result = passive * Multiple - active * Multiple
else if(Symbol === '*') result = (passive * Multiple) * (active * MultipleActive)
else if(Symbol === '/') result = (passive * Multiple) / (active * MultipleActive)
return Symbol === '/' ? result : result / Multiple / MultipleActive
}
export function replaceStr(string,substr,separator){
return string.split(substr).join(separator)
}
export function search_substr_pos(string, substr) {
let _search_pos = string.indexOf(substr), _arr_positions = [];
while (_search_pos > -1) {
_arr_positions.push(_search_pos);
_search_pos = string.indexOf(substr, _search_pos + 1);
}
return _arr_positions;
}
export function search_duplicate_val(arr){
let duplicate_val = [] , duplicate_index = []
arr.forEach((item,index)=>{
arr.forEach((items,indexs)=>{
if(index !== indexs){
if(item === items){
if(!duplicate_val.includes(item)) duplicate_val.push(item)
}
}
})
})
duplicate_val.forEach(item=>{
duplicate_index.push(search_substr_pos(arr,item).join('、'))
})
return { duplicate_val, duplicate_index }
}
export function search_duplicate_day(dateArr){
dateArr = duplicateRemoval(dateArr.sort())
let _days = dateArr.sort().map((day, index) => {
let date = new Date(day)
date.setDate(date.getDate() + 4 - index)
return +date
})
let returnDays = []
let getDaySequenceData = search_duplicate_val(_days).duplicate_index
if(getDaySequenceData.length !== 0){
getDaySequenceData.forEach(item=>{
let str = []
item.split('、').forEach(itemIndex=>{
str.push(dateArr[itemIndex])
})
returnDays.push(str.join('、'))
})
}
return returnDays
}
export function duplicateRemoval(arr){
return Array.from(new Set(arr))
}
export class CustomObject{
constructor(obj) { this.obj = obj; }
filterEmpty(obj = this.obj){
let result = recursion_fil.call(this,obj)
return result
}
replaceKey(obj = this.obj){
let result = recursion_rep.call(this,obj,this.newKey,this.oldKey)
return result
}
}
function recursion_fil(obj){
let newObj = {}
Object.keys(obj).forEach(item=>{
if(Number(item) !== 0) {
if(obj[item] instanceof Object && Object.keys(obj[item]).length){
if(obj[item]){
newObj[item] = obj[item]
Object.keys(newObj[item]).forEach(items=>{
if(!newObj[item][items]) delete newObj[item][items]
})
this.filterEmpty(obj[item])
}
}
if(!(obj[item] instanceof Object)) {
if(obj[item]) newObj[item] = obj[item]
}
}
})
return newObj
}
function recursion_rep(obj,newKey,oldKey){
let newObj = {}
Object.keys(obj).forEach(item=>{
if(Number(item) !== 0){
if(obj[item] instanceof Object && Object.keys(obj[item]).length){
if(obj[item]) this.replaceKey(obj[item])
}
if(item === oldKey) newObj[newKey] = obj[item]
else newObj[item] = obj[item]
}
})
return newObj
}
export function computedStrLen(str) {
let len = 0 , i= 0;
while (i < str.length){
let strData = str.charCodeAt(i);
if ((strData >= 0x0001 && strData <= 0x007e) || (0xff60 <= strData && strData <= 0xff9f)) len++;
else len += 2;
i++;
}
return len;
}
export default {
randomNum,
accuracyCalculation,
replaceStr,
search_substr_pos,
search_duplicate_val,
search_duplicate_day,
duplicateRemoval,
CustomObject,
computedStrLen,
}
let decimal = Math.pow(10, (num.length - (num.indexOf('.')+1)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)