Javascript 为什么重复的元素返回未定义?

Javascript 为什么重复的元素返回未定义?,javascript,arrays,loops,web-applications,Javascript,Arrays,Loops,Web Applications,我想现在发生了一些事情 ['a','b','c',undefined,undefined,undefined] 但不确定。有人知道为什么它不返回重复的元素吗 谢谢 发生这种情况是因为.pop实际上修改了源数组 见 由于.pop正在修改cardsArray,因此随着循环的进行,阵列实际上正在缩小 对于循环的每次迭代,cardsArray开始如下: cardsArray=['a','b','c','a','b','c'] cardsArray=['a','b','c','a','b'] car

我想现在发生了一些事情

 ['a','b','c',undefined,undefined,undefined]
但不确定。有人知道为什么它不返回重复的元素吗


谢谢

发生这种情况是因为
.pop
实际上修改了源数组


由于
.pop
正在修改
cardsArray
,因此随着循环的进行,阵列实际上正在缩小

对于循环的每次迭代,
cardsArray
开始如下:

  • cardsArray=['a','b','c','a','b','c']
  • cardsArray=['a','b','c','a','b']
  • cardsArray=['a','b','c','a']
  • cardsArray=['a','b','c']
  • cardsArray=['a','b']
  • cardsArray=['a']

  • 由此可以清楚地看出,从
    cardsArray[i]
    上的第三次迭代(
    i=2
    )开始,您将从第一个位置复制到最后一个位置。 但是通过添加
    pop()
    ,每次使用
    pop
    时,您也会删除最后一项,因为一半的arry端点未定义

    unshift()
    更换
    pop
    ,这将解决您的问题

    我真的不明白代码的目的,但html可能会帮助我添加它

    希望这有帮助:>

    //const cardChild=document.queryselectoral('.card i');
    常量cardsArray=[a'、'a'、'b'、'b'、'c'、'c'];
    常量匹配数组=[];
    函数cardsToClass(){
    对于(i=0;icardsToClass()
    你想让cardsArray成为
    ['a','b','c']
    ?你能添加你的html吗?我正在尝试让matchArray['a','b','c','a','b','c']像cardsArray那样。但是,最后一个“a”“b”“c”显示为Undefinedhmm。。。。。你是对的。我最终需要比较这些卡片并匹配阵列。我将尝试克隆一个“新”卡阵列,然后“弹出”旧卡阵列。你说得对!非常感谢。这确实为我提供了所需的重复阵列。但是,如果没有.pop(),它不会将这些元素“弹出”到DOM中。我得把那个问题解决掉。谢谢你给我指明了正确的方向!
     ['a','b','c',undefined,undefined,undefined]
    
     matchArray.push(cardsArray[i]);