问题:往一个数组中push对象,对象的唯一标识为name,当push到某个对象时,发现数组中存在 name相等的对象,此时如何更新数组中name相同的对象为当前要push的对象,如果数组中的对象已经存在>6秒则删除此对象。
代码:
const objArray = [{name: 1, other: 2}, {name: 2, other: 2}];
const addObj = {name: 2, other: 4}
const index = objArray.findIndex(i => i.name === addObj.name);
if(index > -1) {
objArray[index] = addObj;
} else {
objArray.push(addObj);
}
不定时向objArray push对象,name相等则更新且当前对象存在数组的时间重新计算,不相等就push,那么如果数组中的对象存在6秒且没有更新,怎么写逻辑从数组中删除此对象
这题肯定不能用数组遍历做。太恐怖了,建议你维护个额外队列,把搜索这块做成
n(1)
。这样你做的时候只需要判断 hash 里面有没有就完事了,有的话就是更新。没有就是push并记录下标。
也不能说妥了,其实你可以在读的时候做,判断缓存过期就不读了。维护一个有序的队列。比如说最早的在最前面,定时做删除,这样就是 一个 while 判断。