11、数组对象去重
* @method arrHeavy() 数组对象去重
* @param sourceArr 原数组
* @param keyArray 所要以什么字段为参考的数组
*/
arrHeavy: (sourceArr, keyArray) => {
let obj = {}
let arr = []
sourceArr.forEach((d) => {
let str = ''
keyArray.forEach((key) => {
str += d[key] || d[key] === 0 ? d[key] + '$' : ''
})
if (!obj[str]) {
arr.push(d)
obj[str] = 1
}
})
return arr
},
12、从数组对象中获取某个属性,组成新的数组
getCodeFromArr: (sourceArr, attr) => {
let arr = []
sourceArr.forEach((item) => {
let param = {}
attr.forEach((key) => {
param[key] = item[key]
})
arr.push(param)
})
return arr
},
13、copyText() 将文案复制到黏贴板
copyText(text) {
const input = document.createElement('input')
input.style.position = 'absolute'
input.style.zIndex = -10
document.body.appendChild(input)
input.setAttribute('value', text)
input.select()
document.execCommand('copy')
document.body.removeChild(input)
},
14、多出部分加...
subStr(str, n) {
if (str) {
let r = /[^\x00-\xff]/g;
if (str.replace(r, "mm").length <= n) { return str }
let m = Math.floor(n / 2);
for (let i = m; i < str.length; i++) {
if (str.substr(0, i).replace(r, "mm").length >= n) {
return str.substr(0, i) + "...";
}
}
}
return str;
},
formatData(text, len = 10) {
let str = text
if (str && str.length > len) {
str = str.substring(0, len) + '...'
}
return str
},
15、每隔n个字符加入操作符
nReplace(text, len, op = '\n') {
let str = text
let re = new RegExp(`(.{${len}})`, 'g')
if (str && str.length > len) {
str = str.replace(re, `$1${op}`)
}
return str
},
16、简单数据转化成ztree数据
/**
* @method simpleToArray 简单数据转化成ztree数据
* @param params simple设置
***/
simpleToArray(sNodes, params = {}) {
var i, l,
key = params.idKey || 'id',
val = 'value',
kk = 'key',
title = 'title',
name = params.nameKey || 'name',
parentKey = params.parentKey || 'pId',
childKey = 'children'
if (!key || !sNodes) return []
if (Object.prototype.toString.apply(sNodes) === "[object Array]") {
var r = []
var tmpMap = {}
for (i = 0, l = sNodes.length
tmpMap[sNodes[i][key]] = sNodes[i]
sNodes[i][kk] = sNodes[i][val] = sNodes[i][key]
sNodes[i][title] = sNodes[i][name]
}
for (i = 0, l = sNodes.length
if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] !== sNodes[i][parentKey]) {
if (!tmpMap[sNodes[i][parentKey]][childKey])
tmpMap[sNodes[i][parentKey]][childKey] = []
tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i])
} else {
r.push(sNodes[i])
}
}
return r
}
return [sNodes]
},
17、组织树数据格式化
// 组织树数据格式化
transformData(tree) {
let arr = []
if (!!tree && tree.length !== 0) {
tree.forEach(item => {
let obj = {}
obj.title = item.name
obj.key = item.id
obj.value = item.id
obj.checked = item.checked
obj.children = this.transformData(item.children)
arr.push(obj)
})
}
return arr
},
18、导出
saveFile(data, fileName, type = 'excel') {
const ZIP = 'application/zip;charset=utf-8'
const EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
let terminalType = ''
if (type === 'excel') {
terminalType = EXCEL
} else if (type === 'zip') {
terminalType = ZIP
}
var blob = ''
if (typeof (data) === 'string') {
let code = atob(data.replace(/\r\n/g, ''))
var abuffer = new window.ArrayBuffer(code.length)
var uBuffer = new window.Uint8Array(abuffer)
for (var i = 0; i < code.length; i++) {
uBuffer[i] = code.charCodeAt(i) & 0xff
}
blob = new Blob([uBuffer], {
type: terminalType
})
} else {
blob = new Blob([data], {
type: terminalType
})
}
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName)
} else {
var href = window.URL.createObjectURL(blob)
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
save_link.href = href
save_link.download = fileName
document.body.appendChild(save_link)
var event = document.createEvent('MouseEvents')
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
save_link.dispatchEvent(event)
document.body.removeChild(save_link)
window.URL.revokeObjectURL(href)
}
},