JavaScript中for和filter哪個效能更好?

時間 2021-05-05 19:26:44

1樓:bilibilili

首先你要先去看看 filter 是怎麼實現的。另外 for 迴圈裡面兩個優化點。看你這個判斷條件這麼簡單,沒必要在迴圈裡重新申請乙個變數了,另外不需要 break,直接 return 出去就完事兒了。

另外說效能的話,除非你的陣列很長,子元素很大,一般情況來說,你感受不到效能區別。要說效能的話 for 比 filter 好,而 for 是萬能場景,其他陣列 prototype 上的方法都有自己適用的場景。

2樓:

匿名回答以免汙染時間軸……

你的主要問題在於使用了 for in 遍歷陣列,你應該使用

// for

for(

letindex=0

;index

.city

.length

;index++)

{}// for of

for(

letitem

ofareaJson

.city){}

中的一種,另外反對 @隨風飄揚的大黃狗 的答案,給區域性變數賦值並不是效能瓶頸,拒絕腦測

次要問題是你的 city 變數沒有宣告,成為了隱式的全域性變數,雖然只訪問一次對效能沒影響

再就是如果你的 item.city_id 與 cityId 型別不同的話,使用 == 比較是會有型別轉換的開銷的

另外介紹一下 Array.prototype.find() 函式,這才是你要找的東西,filter() 會遍歷整個陣列的

areaJson.city.find(item => item.city_id === cityId);

3樓:隨風飄揚的大黃狗

for(let index in areaJson.city){

let item = areaJson.city[index];//此處每次迴圈都會給區域性變數item賦值並且分配空間可能是此處拖慢了效率而且js是解釋性語言對這種地方的優化還不太好

if(item.city_id == cityIdcity = itembreakreturn city;

//以下是我的改法你可以試試另外也建議你去看看filter的原始碼其實現演算法也是簡單的for迴圈遍歷

var item;

for(let index in areaJson.city){

if(areaJson.city[index].city_id == cityIditem=city[indexbreakreturn item;

javascript中Obejct和Function到底是啥關係?

function Object 和function Function 都是系統內建的建構函式,所以就形成了以下的原型鏈 Object Function.prototype Object.prototype null Function Function.prototype Object.prototy...

javascript中object keys方法使用的問題(實操和書上寫的不相符)?

混混蛋 Object.keys obj 返回obj的自身 不包含原型鏈上的 的所以可列舉屬性的名字陣列 for in迴圈則包含原型鏈.for name in obj Object.getOwnPropertyNames obj 返回obj自身 不含原型鏈上的 的所有屬性名陣列,包括不可列舉的 想要獲...

javascript中Element nodeValue和innerHTML有什麼區別

DOM中的節點是分好幾種型別,常見的有 1.文件節點 document,唯一 2.元素節點 那些個標籤div,p之類 3.屬性節點 class,src這種 4.文字節點 插入在p,div內的文字 其它。其中element.nodeValue,是節點的值,其中屬性節點和文字節點是有值的,而元素節點沒有...