Coffeescript - 如何让循环遍历数组中新添加的元素?

时间:2017-08-10 22:24:18

标签: coffeescript

如果需要,我需要遍历一个数组并向该数组添加更多元素。但是coffeescript似乎以旧的长度终止循环(当for循环开始时数组结束)。我需要循环来遍历新添加的元素。我该如何解决这个问题?

arr = [1,2,3,4,5]

for x in arr
    console.log(x + ">>>" + arr)    
    if(x < 3)
        arr.push(5)

控制台输出:

enter image description here

JSFiddle

这似乎不是js中的问题:

arr = [1,2,3,4,5]

for(i=0 ; i<arr.length ; i++){
    console.log(arr[i]);
  if(arr[i] < 3)
    arr.push(5)
}

控制台输出:

enter image description here

JSFiddle

1 个答案:

答案 0 :(得分:0)

不要改变你正在迭代的数组。将算法拆分为多个段,例如:

arr = [1,2,3,4,5]
to_add = []

# 1. Check for new items to add
for x in arr  
  if x < 3
    to_add.push(5)

# 2. Add the new items
arr = arr.concat(to_add)

# 3. Iterate over the array, including the new items    
for x in arr
  your_thing(x)