// /**
// * 数组对象去重,根绝传入的key,判断去重的标准
//
//
// * @author,crazystudent13
// * @todo,暂无待办
// * @param { array } arr - 需要去重的数组对象
// * @param { string } distinctKey - 去重的判断的key
// * @return 去重结果
// */
export function arrObjDistinct(arr, distinctKey) {
let obj = {}
let arrTemp = new Array()
arrTemp = arr.reduce((cur, next) => {
obj[next[distinctKey]] ? '' : (obj[next[distinctKey]] = true && cur.push(next))
return cur
}, []) // 设置cur默认类型为数组,并且初始值为空的数组
return arrTemp
}
/**
* @description 数组对象查重,根绝传入的key,判断当前数组是否有重复
* @author,crazystudent13
* @todo,实现方式不够优雅,所以这里需要处理一下,而且和另一个方法,命名似乎可以归类一下
* @method distinctArrKeys
* @param { array } arr - 需要去重的数组对象
* @param { string } distinctKey - 去重的判断的key
* @return { boolean } 去重判断结果结果,如果有重复项,返回true, 反之返回false
*/
export function distinctArrKeys(arr, distinctKey) {
let flag = true
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
console.log(arr[i][distinctKey], arr[j][distinctKey])
if (arr[i][distinctKey] !== arr[j][distinctKey]) {
flag = false
break
}
}
}
return !flag
}
/**
* @description 返回数组对象下标
* @author crazystudent13
* @todo 这个方法有优化空间,也许不仅仅可以是只返回下标
* @method findArrObjIndex
* @param { array } arr - 需要去重的数组对象
* @param { object } row - 需要判断的行
* @param { string } param - 需要判断的数组的对象
* @return { number } 具体的数组下表
*/
export function findArrObjIndex(arr, row, param) {
let currentIndex = {}
if (arr.length > 0) {
arr.map((item, index) => {
if (item[param] == row[param]) {
currentIndex = { index, item }
}
})
}
return currentIndex
}
/**
* @description 列表分组
* @author crazystudent13
* @todo 暂无
* @method groupByType
* @param { array } arr - 需要分组的数组对象
* @param { string } param - 分组的判断字段
* @return { array } 分组完成的数组
*/
export function groupByType(arr, param) {
let map = {}
let dest = []
for (var i = 0; i < arr.length; i++) {
var ai = arr[i]
if (ai[param] && !map[ai[param]]) {
dest.push({
name: ai[param],
data: [ai],
})
map[ai[param]] = ai
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j]
if (dj.name == ai[param]) {
dj.data.push(ai)
break
}
}
}
}
return dest
}
/**
* @description 数组去空工具
* @author crazystudent13
* @todo 暂无
* @method removeArrayNull
* @param { array } arr - 需要出去数组中空值的数组
* @return { array } 去空完成的数组
*/
export function removeArrayNull(arr) {
let arrHandler = []
arrHandler = arr.filter((item) => {
return item !== null
})
return arrHandler
}
/**
* @description 数组去重
* @author crazystudent13
* @todo 暂无
* @method uniqueArr
* @param { array } arr - 非数组对象,简单的一维数组
* @return { array } 去重完成的结果
*/
export function uniqueArr(arr) {
let arrTemp = arr || []
return Array.from(new Set(arrTemp))
}
/**
* @description 数组key值大小写转换,常用来处理接口返回的不规则结果
* @author crazystudent13
* @todo 暂无
* @method upperOrLowerKeys
* @param { array } arr - 将数组对象中的key转换为大写key
* @param { string } code - 转换的方向 upper 代表转大写,lower代表转小写
* @return { array } 字段值转换完成的数组结果
*/
export function upperOrLowerKeys(arr, code) {
let newArray = []
arr.map((item) => {
let tempItem = {}
Object.keys(item).map((itemKey) => {
let tempKey = ''
tempKey = code === 'upper' ? itemKey.toLowerCase() : itemKey.toLowerCase()
tempItem[tempKey] = item[itemKey]
})
newArray.push(tempItem)
})
return newArray
}