Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Typescript结构数组长度不起作用_Arrays_Typescript - Fatal编程技术网

Arrays Typescript结构数组长度不起作用

Arrays Typescript结构数组长度不起作用,arrays,typescript,Arrays,Typescript,我有一个具有内部结构的类,它是我拥有的结构的数组: Fields: DataField<any>[] = new Array<DataField<any>>(); 我的测试是: expect(TestObject.Fields.length).toBe(2); 但此测试失败,并报告长度为0 expect(received).toBe(expected) Expected value to be (using ===): 2 Received: 0

我有一个具有内部结构的类,它是我拥有的结构的数组:

Fields: DataField<any>[] = new Array<DataField<any>>(); 
我的测试是:

expect(TestObject.Fields.length).toBe(2);
但此测试失败,并报告长度为0

expect(received).toBe(expected)
Expected value to be (using ===):
  2
Received:
  0
使用TestObject.Fields.length上的console.log也显示0

console.log(TestObject.Fields.length) 
  0

按索引设置元素不会更改长度:

修理
使用数组上存在的方法,如
push
slice

尝试
console.log(Object.keys(TestObject.Fields).length)
this.Fields[FieldName]=FieldInfo
,将字符串索引到一个数组中,是否甚至数组bro?之所以
x['a']='a'
不会更改长度,是因为它只是在数组实例
x
上添加了
a
作为另一个属性,它不会更新
x
指向的底层连续内存块,数组只是具有数字属性的javascript对象,javascript允许您将任何属性添加到现有的objects@basarat我仍然希望能够通过键名访问元素,因为这段代码来自于构建数组的库函数。如果我在数组中使用push(),我是否可以始终将新条目作为最后一个条目,这样我就可以将索引更改为键?我想我最好把它移到Dictionary对象中。
expect(received).toBe(expected)
Expected value to be (using ===):
  2
Received:
  0
console.log(TestObject.Fields.length) 
  0