一种比 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)

有没有比每次遍历所有 1500 个元素更有效的方法?

find() 在遇到匹配项时会中断。所以这真的归结为你需要多长时间进行一次搜索。如果您经常这样做,请创建一个使用城市名称作为键的哈希图,以允许 O(1) 查找。您可以使用常规对象或 Map

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

用法:

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