2016-11-07 37 views
0

如何在迭代器中遍歷typescript中的數組,同時能夠在需要時修改迭代器?我在我的程序如下打字稿邏輯:對數組進行迭代並更改打印稿中的項目

for let list_item of list 
    if list_item matches condition: 
     modify list_item 

然而,這並不工作,因爲我想打字稿不返回一個可變的迭代器?我怎樣才能做到這一點?這可以通過枚舉數組來完成,例如for(let list_item, index of list) { ... },但我不知道這是否存在。

這是我遇到的問題的例子:goo.gl/5eDNsD

回答

1

你不能這樣做的。 list_item不是某種指向數組中值的指針,通過它可以修改數組。 list_item只是一個普通的舊值,修改它將不會做任何事情。如果要修改陣列,則必須使用list[idx]修改陣列。這當然意味着你將無法使用for...of循環,因爲它不會給你索引。

for(let list_item, index of list) { ... }你正在尋找的結構是

for (let [idx, list_item] of list.entries()) { 
    if list_item matches condition: 
    modify list[idx] 
} 

順便說一句,這有什麼特別的做打字稿。

+0

當我使用'entries()',我得到一個長度爲零的數組迭代器,任何想法是什麼? –

+0

對,它會返回一個迭代器。然後你必須做一些事情來獲取迭代的值,比如'for ... of',或者'[... iterator]',或者'Array.from(iterator)'等等。 – 2016-11-08 02:08:14

0

你是什麼意思通過修改迭代器?至少可以告訴你想要迭代元素並修改元素,如果它們滿足特定的條件。如果是這種情況,你可以使用map

list = list.map(list_item => { 
    if list_item matches condition 
     modify list_item and return 
    } 
return list_item 
)