簡體   English   中英

一種比 Array.prototype.find() 更有效地在數組中獲取項目的方法

[英]A more efficient way to get an item inside of an array than Array.prototype.find()

我得到了一個大約 1500 個元素的cities數組。

我正在循環獲取特定城市:

cities.find(city => city.name === currentAddress.city.name)

這是O(n)

有沒有比 go 每次都通過所有 1500 個元素更有效的方法?

find() 遇到匹配時會中斷。 所以它真的歸結為你需要多久進行一次搜索。 如果您經常這樣做,請使用城市名稱作為鍵創建 hashmap 以允許 O(1) 查找。 您可以使用常規 object 或 Map

const cityMap = new Map(cities.map(city => ([city.name, city]));

用法:

// returns undefined or city object
const cityDetails = cityMap.get(currentAddress.city.name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM