您可以使用一种方法使您的解决方案动态化:
方法一是:
const removeOldItems = (obj, numbItems) => {
const keys = Object.keys(obj);
if(numbItems > keys.length) return; // you can handle this error here
const updatedKeys = keys.sort((a, b)=>obj[a].time - obj[b].time).slice(numbItems);
const newObj = {};
updatedKeys.forEach(k => Object.assign(newObj, {[k]:obj[k]}));
return newObj;
}
或源自@dave 的答案的方法 2 - 如果您更喜欢缩写形式:
const removeOldItems = (obj, numbItems) => {
const keys = Object.keys(obj);
if(numbItems > keys.length) return; // handle this error here if needed
return Object.fromEntries(Object.entries(obj).sort((a, b) => a[1].time - b[1].time).slice(numbItems))
}
然后用任意数量的你想摆脱的旧项目调用它:
const obj = {
'abc': {'time': 1, 'data': 100},
'wad': {'time': 3, 'data': 200},
'gfd': {'time': 2, 'data': 700},
'qwe': {'time': 4, 'data': 344},
}
// Using object copies
console.log(removeOldItems({...obj}, 1)) //remove 1 old item
console.log(removeOldItems({...obj}, 2)) //remove 2 old item
console.log(removeOldItems({...obj}, 3)) //remove 3 old item