/*
通过深度和名字查询数组
*@param 需要遍历的数组
*@param 查询所需要的id
*/
function getObjByNameAndDepth(list: any, name: any, depth: any) {
//判断list是否是数组
if (!list instanceof Array) {
return null
}
//遍历数组
for (let i in list) {
let item = list[i]
if (item.title === name && item.depth === depth) {
return item
} else {
//查不到继续遍历
if (item.children) {
let value = getObjByNameAndDepth(item.children, name, depth)
//查询到直接返回
if (value) {
return value
}
}
}
}
}
//遍历树并给树添加属性
function treeRecursion(data) {
for (let key in data) {
// 因为for in遍历的是对象
// 所以只需要让key等于id对数据修改即可
// 否则有多少个属性就要修改多少次
// 浪费性能且报错
// 一个已是Sring类型的数据再使用toString会报错
if (key === "id") {
// 把数字类型转为字符串
// console.log(data)
Object.assign(data, JSON.parse(JSON.stringify({
value: data.title,
label: data.title
})))
}
if (typeof data[key] === "object") treeRecursion(data[key]);
}
return data;
}
//数组去重
function newArrFn(arr: any, type: any) {
// 创建一个新的空数组
let newArr: any = []
for (let i = 0; i < arr.length; i++) {
// 设置一个开关,如果是true,就存进去,不是就不存
let flag = true
for (let j = 0; j < newArr.length; j++) {
// 原数组和新数组作比较,如果一致,开关变为 false
if (type == 0) {
arr[i].id === newArr[j].id ? flag = false : flag
} else {
arr[i].source === newArr[j].source && arr[i].target === newArr[j].target ? flag = false : flag
}
};
flag ? newArr.push(arr[i]) : newArr
};
return newArr
}
树和数组常用函数总结
最新推荐文章于 2024-06-10 22:18:41 发布