如何在typescript中迭代数组,同时如果需要可以修改迭代器?我的程序中有以下打字原则:
for let list_item of list
if list_item matches condition:
modify list_item
然而这不起作用,因为我觉得typescript不会返回一个可变的迭代器?我怎样才能做到这一点?这可以通过枚举数组来完成,例如for(let list_item, index of list) { ... }
,但我不知道这是否存在。
以下是我遇到的问题示例:goo.gl/5eDNsD
答案 0 :(得分: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]
}
顺便说一句,这与TypeScript没有任何关系。
答案 1 :(得分:0)
修改迭代器是什么意思?据我们所知,您希望迭代元素并修改元素,如果它们满足特定条件。如果是这种情况,您可以使用map
list = list.map(list_item => {
if list_item matches condition
modify list_item and return
}
return list_item
)
答案 2 :(得分:0)
您可以使用像这样的库:https://github.com/labs42io/itiriri#map
然后简单地:
import {query} from 'itiriri';
query([1, 2, 3]).map(elem => elem * 10).toArray(); // returns [10, 20, 30]