如何用pop()清空数组?循环后仍剩余元素的问题解决
问题分析
你用for...in遍历数组的同时调用pop(),会导致遍历提前终止,最终数组剩余元素。具体原因:
for...in是按数组的索引顺序遍历,初始数组有5个元素,对应索引0、1、2、3、4。- 第一次循环:
pop()移除最后一个元素,数组长度变为4,遍历到索引0。 - 第二次循环:
pop()后数组长度变为3,遍历到索引1。 - 第三次循环:
pop()后数组长度变为2,遍历到索引2。 - 接下来
for...in要找下一个索引3,但此时数组长度仅为2,不存在索引3,循环直接停止,因此数组还剩2个元素。
正确实现方式
方式1:用while循环持续清空数组
适合需要逐个移除元素并观察过程的场景:
function ürünSil(){ let diller = [ "Türkçe", "İngilizce", "Almanca", "Fransızca", "Japonca"] while(diller.length > 0){ let sonİcerik = diller.pop() document.write(diller + "<br />") } }
方式2:直接赋值清空数组
如果不需要逐个移除的过程,这是最高效的方式:
function ürünSil(){ let diller = [ "Türkçe", "İngilizce", "Almanca", "Fransızca", "Japonca"] diller = []; // 直接清空数组 document.write(diller + "<br />") }
方式3:反向for循环遍历
如果一定要用for循环,从数组末尾开始遍历,避免索引混乱:
function ürünSil(){ let diller = [ "Türkçe", "İngilizce", "Almanca", "Fransızca", "Japonca"] for(let i = diller.length - 1; i >= 0; i--){ let sonİcerik = diller.pop() document.write(diller + "<br />") } }
内容的提问来源于stack exchange,提问作者Fatih ÜN
相关产品推荐
相关产品推荐

