一、 将对象拼接到url地址后面
ObjConcatURL ( obj ) {
if ( ! ( typeof obj == 'object' ) || Object. keys ( obj) . length == 0 ) {
return "" ;
} else {
for ( let key in obj) {
if ( obj. hasOwnProperty ( key) && ( obj[ key] == null || obj[ key] == undefined || obj[ key] == NaN || obj[ key] == '' ) ) {
delete obj[ key]
}
}
return obj ? '?' + Object. keys ( obj) . map ( i => ` ${ i} = ${ obj[ i] } ` ) . join ( '&' ) : "" ;
}
} ,
二、正则获取url中的图片名称
handleDownload ( url ) {
if ( ! url) {
this . $message. warning ( "链接不存在" )
return
}
let link = document. createElement ( 'a' )
link. style. display = 'none'
link. href = url
const reg = / [^/]+(?!.*\/) / g
const imgName = url. match ( reg) . filter ( item => item) . pop ( )
link. setAttribute ( 'download' , imgName)
document. body. appendChild ( link)
link. click ( )
document. body. removeChild ( link)
window. URL . revokeObjectURL ( url)
}
三、获取多数组之间的差集
arrayAminus ( arrA, arrB, arrC ) {
return arrA. filter ( v => ! arrB. includes ( v) && ! arrC. includes ( v) ) ;
} ,
四、数组遍历判断是否需要拼接地址
pushArr ( arr ) {
if ( ! Array. isArray ( arr) || arr. length == 0 ) { return [ ] }
let newArr = [ ]
arr. forEach ( item => {
if ( ( typeof item == 'object' ) && item. url) {
item. url. includes ( "http" ) || item. url. includes ( ";base64," ) ? newArr. push ( item. url) : newArr. push ( process. env. VUE_APP_FILE_URL + item. url)
} else {
item. includes ( "http" ) || item. includes ( ";base64," ) ? newArr. push ( item) : newArr. push ( process. env. VUE_APP_FILE_URL + item)
}
} )
return newArr
} ,
filterArrType ( arr, type ) {
if ( ! Array. isArray ( arr) || arr. length == 0 ) { return [ ] }
let newArr = [ ]
arr. forEach ( item => {
if ( type == "gross" && ( item. includes ( "gross" ) || item. includes ( "First" ) ) ) { newArr. push ( item) }
else if ( type == "tare" && ( item. includes ( "tare" ) || item. includes ( "Second" ) ) ) { newArr. push ( item) }
else if ( type == "chetou" && item. includes ( "chetou" ) ) { newArr. push ( item) }
else if ( type == "chewei" && item. includes ( "chewei" ) ) { newArr. push ( item) }
else if ( type == "chexiang" && item. includes ( "chexiang" ) ) { newArr. push ( item) }
else if ( type && item. includes ( type) ) { newArr. push ( item) }
} )
return newArr
} ,
五、 数组去重
export function arrFilter ( arr ) {
if ( ! Array. isArray ( arr) && arr. length == 0 ) { return [ ] ; }
return Array. from ( new Set ( arr) ) ;
}
六、如果值不存在就 push 进数组, 反之不处理
export function pushIfNotExist ( array, value, key ) {
for ( let item of array) {
if ( key && ( item[ key] === value[ key] ) ) {
return false
} else if ( item === value) {
return false
}
}
array. push ( value)
return true
}
七、过滤对象中为NaN,undefined的属性
export function objFilter ( obj, type ) {
if ( ! ( typeof obj == 'object' ) ) {
return ;
}
for ( let key in obj) {
if ( obj. hasOwnProperty ( key) && ( obj[ key] == null || obj[ key] == undefined || obj[ key] == NaN ) ) {
console. log ( '---------过滤对象(null/undefined/NaN):' + key + ':' + obj[ key] + '----------' )
if ( type) {
obj[ key] == type;
} else {
delete obj[ key] ;
}
}
}
return obj;
}
八、字符串中插入千位分隔符
export function thousandsSeparator ( num ) {
if ( ! ( typeof num == 'number' ) || isNaN ( num) ) {
return ;
}
return ( num + "" ) . replace ( / \d(?=(\d{3})+$) / g , "$&," )
}
九、保留小数位数
export function keepDecimal ( num, digit, type ) {
if ( ! type || type == null || type == '四舍五入' ) {
var result = parseFloat ( num) ;
if ( isNaN ( result) ) { return }
return digit && digit != null ? Number ( result. toFixed ( digit) ) : Number ( result)
} else {
var result = digit && digit != null ? Math. floor ( num * Math. pow ( 10 , digit) ) / Math. pow ( 10 , digit) : parseFloat ( num) ;
if ( isNaN ( result) ) { return }
return result
}
}
十、根据参数搜索的数组对象里面其它元素
export function findElement ( array, key, value, element ) {
if ( ! Array. isArray ( array) ) { return null }
if ( array. length == 0 ) { return null }
let Obj = array. find ( i => i[ key] == value)
return Obj && Obj[ element] ? Obj[ element] : null
}
十一、根据全部列表数组和选中的数组,根据key获取其它key的value数组
export function findElementArr ( arrA, arrB, value, element ) {
if ( ! Array. isArray ( arrA) || ! Array. isArray ( arrB) ) { return [ ] }
if ( arrA. length == 0 || arrB. length == 0 ) { return [ ] }
let arr = [ ]
for ( let index = 0 ; index < arrA. length; index++ ) {
const item = arrA[ index] ;
for ( let i = 0 ; i < arrB. length; i++ ) {
const obj = arrB[ i] ;
if ( ! ( typeof obj == 'object' ) ) {
item[ value] && item[ element] && item[ value] == obj ? arr. push ( item[ element] ) : null
} else {
item[ value] && item[ element] && item[ value] == obj[ value] ? arr. push ( item[ element] ) : null
}
}
}
return arr
}
十二、有新旧两个数组,获取删除和新增的元素
function compareArrays ( beforeArr, afterArr, key ) {
let addArr = [ ] , deleteArr = [ ] ;
for ( let i = 0 ; i < afterArr. length; i++ ) {
const item = afterArr[ i] ;
if ( key && beforeArr. filter ( ( v ) => v[ key] == item[ key] ) . length == 0 ) {
addArr. push ( item) ;
} else if ( ! key && beforeArr. filter ( ( v ) => v == item) . length == 0 ) {
addArr. push ( item) ;
}
}
for ( let i = 0 ; i < beforeArr. length; i++ ) {
const item = beforeArr[ i] ;
if ( key && afterArr. filter ( ( v ) => v[ key] == item[ key] ) . length == 0 ) {
deleteArr. push ( item) ;
} else if ( ! key && afterArr. filter ( ( v ) => v == item) . length == 0 ) {
deleteArr. push ( item) ;
}
}
return { addArr : addArr, deleteArr : deleteArr } ;
}