我正在尝试使用push方法在Typescrypt的数组中添加元素,但是它似乎不起作用。数组保持为空。这是我的代码:
list: Array<int> = Array(10)
for(let x = 0; x <= 10; x++) {
list.push(x)
}
有人遇到同样的问题吗?
答案 0 :(得分:2)
有几件事要注意:
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中的所有数组都是动态的,因此您传递的[]
没有任何意义。10
,const
或let
声明变量的情况下,切勿定义变量。结合以上几点,这是这种情况下代码的外观
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]