如何在数组中添加元素?

时间:2018-09-25 11:46:22

标签: arrays typescript

我正在尝试使用push方法在Typescrypt的数组中添加元素,但是它似乎不起作用。数组保持为空。这是我的代码:

         list: Array<int> = Array(10)
         for(let x = 0; x <= 10; x++) {
                    list.push(x)
         }

有人遇到同样的问题吗?

3 个答案:

答案 0 :(得分:2)

有几件事要注意:

  • TypeScript中没有db.getCollection('somecollection').aggregate( [ { "$facet": { "f1": [ { "$match": { <some query 1> }, { "$project: {<some fixed field projection> } ], "f2": [ { "$match": { <some query 1> } }, { "$project: {<some fixed field projection> } ] } }, { $project: { "rt": { $concatArrays: [ "$f1", "$f2"] } } }, { $unwind: { path: "$rt"} }, { $replaceRoot: {newRoot:"$rt"}} ] ); 类型,因为JavaScript只有一种数字类型,所以相应的TypeScript类型称为int
  • 您不应该使用number(或通常的数组构造函数)来创建数组,有关为什么这样做的信息很多(主要是,它使用length属性创建了所谓的稀疏数组)但没有元素),但通常应使用Array(n)创建一个新数组。无论如何,JavaScript中的所有数组都是动态的,因此您传递的[]没有任何意义。
  • 在未使用10constlet声明变量的情况下,切勿定义变量。

结合以上几点,这是这种情况下代码的外观

var

答案 1 :(得分:1)

您可以这样做:

     list: Array<number> = [];
     for(let x = 0; x <= 10; x++) {
          list.push(x)
     }

     list: Array<number> = Array(10)
     for(let x = 0; x <= 10; x++) {
          list[x];
     }

对您的错误的解释:

Array(10)已经创建了一个包含10个“空”元素的数组。

如果在其上使用push,则实际上会推动元素,但位置在第11到20位。

第1至第10位保持空白(如果尝试获取其值,它们将返回undefined

答案 2 :(得分:1)

int类型不适用于打字稿使用编号,而不是int

let list: Array<number> =  Array(10);
for (let x = 0; x <= 10; x++) {
  list.push(x)
}

以上代码将值推入数组,但这将返回

[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

要解决此问题,请将代码更改为

let list: Array<number> =  Array();
for (let x = 0; x <= 10; x++) {
  list[x] = x;
}

这将返回[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]