You can use a method to make your solution dynamic:
Method 1 is:
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;
}
Or method 2 as derived from @dave's answer - if you prefer shortened form:
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))
}
Then just call it with any number of old items you want to get rid of:
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