JS之數組直接用include方法和數組轉集合后使用has方法效率比較:
數據量小時差異可忽略,數據量大時 “數組轉集合再用 has” 效率遠高于數組的 includes。
核心原因是兩者的查找原理不同:
1. Array.includes():本質是遍歷數組逐個比對,時間復雜度為 O(n),數據越多,耗時線性增長。
2. Set.has():基于哈希表實現,查找時直接定位哈希地址,時間復雜度為 O(1),無論數據量多大,耗時基本恒定。
示例代碼原本是使用compArr.includes方法進行判斷的,現在轉成集合后使用has方法,提升效率。
將數組轉為集合的時間復雜度是O(n),但是Set.has()的時間復雜度是O(1),適合一次轉換,多次查詢的場景。
const compPropSet = new Set(compArr);
// 只遍歷需要處理的組件
compList.value.forEach((comp) => {
if (compPropSet.has(comp.prop)) {
// 優先處理hideConfig,如果存在則隱藏
if (labelCfg.hideConfig) {
comp.isShow = false;
labelVisibilityMap.set(comp.prop, false);
} else if (labelCfg.showConfig) {
comp.isShow = true;
labelVisibilityMap.set(comp.prop, true);
}
}
});