您的位置:首页 > Web前端 > JavaScript

js 简单实现 LRU

2017-11-01 16:16 435 查看
/* ======================================== LRU 最近最少使用 ======================================== */
function LRUCache(limit){
limit = limit||10;
var _store = [];
var index = {};
this.get = function(key){
var ind = index[key];

if(_store[ind]==null){ // 未命中
return null;
}

var newArr = _store.splice(0,ind+1);

var result = newArr.pop();

_store = newArr.concat(_store);

_store.unshift(result);

for(var k in index){
var i = index[k];
if(i==ind){
index[k] = 0;
}else if(i<ind){
index[k] = ++index[k];
}
}

return result;
};

this.set = function(key,value){
if(_store.length>=limit){
_store.pop();
}

for(var k in index){
index[k] = index[k]+1;
}

_store.unshift(value);
index[key] = 0;;
};

this.list = function(){
console.log(_store);
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js lru