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