在存在缓存的情况下,删除较前的slide,会出现当前slide与后一个slide重复出现的情况
假设当前存在5个slide,且这5个slide已缓存,则删除slide2后,仍为5个slide,且slide2的内容变为slide3的内容,此时5个slide存在2个slide3。
这是因为swiper.virtual.cache是对象,而swiper.virtual.removeSlide仅仅是delete swiper.virtual.cache的指定索引,即
cache = {1:slide1, 3:slide3, 4:slide4, 5:slide5}
然后slide进行更新后发现cache 2的位置没有值,于是乎就去virtual.slides获取virtual.slides[2]的值赋值到cache 2的位置,就会出现cache[2]=slide3的情况,即
cache = {1:slide1, 2:slide 3, 3:slide3, 4:slide4, 5:slide5}
virtual.slides是数组,virtual.removeSlide后会splice指定位置,所以virtual.slides内的数据是正常的,virtual.cache没有缓存的情况下会从virtual.slides获取值,故而在virtual.removeSlide函数中,将大于等于删除索引的
virtual.cache都删除就正常了
数组同理,找到需删除的最小值,然后将大于等于该值的virtual.cache删除即可