// 常见数组操作 // 两个数组求交集 export const intersectionArray = (list1: any[], list2: any[]) => { return list1.filter(v => list2.includes(v)) } // 差集 -- 常用于 表格中多选删除 export const differenceArray = (list1: any[], list2: any[]) => { return list1.filter(v => !list2.includes(v)) } // 补集 export const complementaryArray = (list1: any[], list2: any[]) => { return list1.filter((v) => { return !(list2.includes(v)) }) .concat(list2.filter((v) => { return !(list1.includes(v)) })) } // 并集 export const unionArray = (list1: any[], list2: any[]) => { return list1.concat(list2.filter((v) => { return !(list1.includes(v)) })) } // 一维数组去重 export const uniqueArray = (list: any) => { return [...new Set(list)] } // 二维数组根据 某一属性 去重 export const uniqueMultiArray = (list: any, attribute: string) => { const data = list.value.map((item: any) => item[attribute]) return list.filter((item: any) => !data.includes(item[attribute])) } // 一维数组或对象拷贝 export const cloneArray = (data: any) => { return JSON.parse(JSON.stringify(data)) } // 数组操作-下拉框操作(已经选择的数据不能再选) /** * @param list 下拉框初始数据(所有) * @param list1 已经选择的数据 * @param current 当前数据 可为空 * @param attribute 属性(即绑定在 list1哪个属性上) */ export const setSelectList = (list: any[], list1: any[], current: string, attribute: string, attribute2 = 'value') => { const select = [...new Set(list1.map((item: any) => item[attribute]))].filter((item: string) => item !== current) return list.filter((item) => { return !select.includes(item[attribute2]) }) }