迭代数组并更改typescript中的项目

时间:2016-11-07 04:40:20

标签: arrays typescript

如何在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

3 个答案:

答案 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]