优化下面这段代码 resetArr(arr) { let arrWarp = []; // 用于存放唯一Id let result = []; // 最终返回数组 for (let item of arr) { if (arrWarp.includes(item.HatchNo) == false) { let obj = { one: "", two: "", HatchNo: item.HatchNo, classList: [], ShipListDeck: [], ShipListCabin: [], // classList 存放相同Id下的数据 }; obj.classList.push(item.BayNO); result.push(obj); arrWarp.push(item.HatchNo); } else { let index = arrWarp.indexOf(item.HatchNo); result[index].classList.push(item.BayNO); } } return result; },
时间: 2023-03-03 20:35:56 浏览: 85
以下是经过优化后的代码:
resetArr(arr) {
const map = new Map(); // 使用 Map 存储唯一 ID 及其对应的对象
const result = []; // 最终返回数组
for (const item of arr) {
const hatchNo = item.HatchNo;
if (!map.has(hatchNo)) {
const obj = {
one: "",
two: "",
HatchNo: hatchNo,
classList: [item.BayNO], // 直接将 BayNO 添加到 classList 中
ShipListDeck: [],
ShipListCabin: [],
};
map.set(hatchNo, obj);
result.push(obj);
} else {
const obj = map.get(hatchNo);
obj.classList.push(item.BayNO);
}
}
return result;
}
这里采用了以下优化措施:
1. 使用 Map 代替数组来存储唯一 ID 及其对应的对象,这样可以避免每次循环时都要调用数组的 includes 方法来判断是否已存在该 ID。
2. 将 classList 数组的初始化放到创建对象时,直接将 BayNO 添加到其中,避免了后面的 push 操作。
3. 使用 const 声明不变的变量,避免不必要的变量重新赋值。
通过这些优化,可以提高代码的性能和可读性。
阅读全文