前端 JS 经典:LRU 缓存算法

前言:什么是 LRU 呢,单词全拼 Least Recently Used,意思是最久未使用 。这个算法是做缓存用的,比如,你要缓存一组数据,你要划分缓存块出来,因为不可能每个数据都做缓存,那么划出来的这个缓存块,就要遵守 LRU 缓存算法。比如你画出来了 4 个缓存块,你已经存了 4 个缓存数据,那么新的数据还要缓存进去,就需要删除之前的一个缓存,那么删除哪个呢,就是最久未使用的那个数据,算法实现如下:定义一个缓存内,用 map 来装键值对。# 代表的私有属性。has 判断是否有缓存数据,get 获取数据后,数据要变成最新使用的数据,要删的时候,不会删它,set存入新数据,然后删除最久未使用的数据。

javascript 复制代码
class LRUCache {
  #map;
  #length;
  constructor(len) {
    this.#map = new Map();
    this.#length = len;
  }

  has(key) {
    return this.#map.has(key);
  }
  get(key) {
    if (this.has(key)) return null;
    const value = this.#map.get(key);
    this.#map.delete(key);
    this.#map.set(key, value);
    return value;
  }
  set(key, value) {
    if (this.has(key)) {
      this.#map.delete(key);
    }
    this.#map.set(key, value);
    if (this.#map.size > this.#length) {
      this.#map.delete(this.#map.keys().next().value);
    }
  }
}
相关推荐
松小白song9 小时前
机器人路径规划算法之Dijkstra算法详解+MATLAB代码实现
前端·javascript·算法
SuperEugene9 小时前
Vue3 中后台实战:VXE Table 从基础表格到复杂业务表格全攻略 | Vue生态精选篇
前端·vue.js·状态模式·vue3·vxetable
打小就很皮...9 小时前
实现可交互的泳道图组件(React)
前端·react.js·泳道图
optimistic_chen9 小时前
【Vue3 入门】掌握这些才能优雅上手
前端·javascript·vue.js·前端框架·visual studio code
认真的小羽❅9 小时前
JavaScript完全指南:从入门到精通
开发语言·javascript·ecmascript
fengxin_rou10 小时前
一文读懂 Redis 集群:从哈希槽到透明访问
java·数据库·redis·算法·spring·缓存
JEECG低代码平台10 小时前
终端里的AI搭档:我用Claude Code提效的实战心得
前端·人工智能·chrome
HelloReader10 小时前
Flutter ChangeNotifier用 ViewModel 管理应用状态(九)
前端
用户40993225021210 小时前
Vue 3 静态与动态 Props 如何传递?TypeScript 类型约束有何必要?
前端·vue.js·后端
程序员库里10 小时前
TipTap简介
前端·javascript·面试