评估接口+课程部分

This commit is contained in:
kclf
2022-11-08 15:49:53 +08:00
parent 57509c7e8c
commit 5a647ef48a
25 changed files with 17428 additions and 1199 deletions

86
src/utils/utils.js Normal file
View File

@@ -0,0 +1,86 @@
//
export function traverseArr(arr, traverseObj, saveOld = false) {
const newArr = [];
if (arr.length !== 0) {
arr.forEach((item) => {
let obj = {};
if (saveOld) {
obj = {
...item,
};
}
if (Object.keys(traverseObj).length !== 0) {
for (const key in traverseObj) {
if (typeof traverseObj[key] === "string") {
obj[key] = item[traverseObj[key]];
} else {
if (item[key] && item[key].length !== 0) {
obj[key] = traverseArr(item[key], traverseObj);
}
}
}
}
newArr.push(obj);
});
}
return newArr;
}
// export function deepClone(obj) {
// let result = typeof obj.splice === "function" ? [] : {};
// if (obj && typeof obj === "object") {
// for (let key in obj) {
// if (obj[key] && typeof obj[key] === "object") {
// result[key] = deepClone(obj[key]);
// } else {
// result[key] = obj[key];
// }
// }
// return result;
// }
// return obj;
// }
export function deepCloneFilterString(obj, fillterKeys) {
let result = typeof obj.splice === "function" ? [] : {};
if (obj && typeof obj === "object") {
for (let key in obj) {
if (obj[key] && typeof obj[key] === "object") {
result[key] = deepCloneFilterString(obj[key], fillterKeys);
} else {
result[key] = fillterKeys.includes(key) ? obj[key] : String(obj[key]);
}
}
return result;
}
return obj;
}
export function sortBy(arr, ...keys) {
return arr.sort((x, y) => {
for (const key of keys) {
const valueX = typeof key === "function" ? key(x) : x[key];
const valueY = typeof key === "function" ? key(y) : y[key];
if (valueX > valueY) {
return 1;
}
if (valueX < valueY) {
return -1;
}
}
return 0;
});
}
export function filterCommon(arr, key) {
let newData = {};
arr.forEach((item) => {
//新建属性名
if (Object.keys(newData).indexOf("" + item[key]) === -1) {
newData[item[key]] = [];
}
//对应插入属性值
newData["" + item[key]].push(item);
});
return newData;
}