请教一个基础问题~~ 我用元组存储了一组数据, 数据的ID使用 921000 到 922008 如图所示,按道理就是1008个元素才是,为什么length是922009. 要是这样元组还能使用么~, 921000 到 922008 这些ID用的字符串类型。
这边建议学一下计算机基础
哈哈,多谢建议。刚使用TS几天,元组不一定就是下表为0开始的数组。也可以是字典实现的。如果是走下标的话,元组就不支持字符串做为key了。感觉很特殊, 支持字符串做key,也支持整数做为key, 一旦有整数为key,length的长度就等于最大的整数+1, 而字符串做为key, length为0, 这是啥基础语言,想问问为什么。。。。假如按照这种模式的实现,很容易不小心存入一个key很大的数值为key,是不是一下length就很大了,那内存还怎么控制。
数组没有key的说法,key是map, 你是不是这样存储的 arr[922008] = 922008 ??, 方括号里面表示下标,不是key,如果是这样赋值,那么数组长度是 922009, 上面那位兄弟说的对,这的确是计算机基础里面的数据结构
哈哈,好吧。var ddsda = [];
ddsda[‘daas’]= ‘daasas’;
ddsda[‘daas1’]= ‘daasas’;
测试一下这个, 为什么length是0, 上面的key是字符串,不是数值的0-N的数组下标哈。
当加上一条 ddsda[1000]= ‘daasas’; 就变成了1001的大小。
怎么会是基础的数组,问的直接点:
1.是不是不是一个数据结构组成的,是map+array, 而length只显示 array的大小。
而计算机基础主要说的是数组大小,很少这么高层次的集成的数组,直接赋值下标,如果这样就自动重新分配数组大小了,这应该是很少见的类型,而且是语言设计里面比较低效的,主要是TS的更高级化的便捷用途导致的,跟计算机基础关系不是很大。
2.第二点可以确认下,是不是TS就是这样,数组大小,只要下标发生变化为更大的值,整个数组就会自动重新分配,还是只是显示问题。。。
问这个问题主要是因为,将数据表数据行的ID做为key了,如果数组自动分配这么大,那key都是很大的数,内存会爆掉。我以为支持字符串和数字来设计元组,我以为是map在底层做的打底,所以确认下,不行就不用元组了。
已结贴。
多谢二位解答。我没问清楚,多多理解。
class TableCacheMap
{
//public _tableArray = [];
public _array = new Array();
public _cacheMap:Map<string, any> = new Map<string, any>();
}
我拆分了使用。不用元组了。
我没问清楚,谢谢回复。。
我没问清楚,谢谢回复。。

原本是想听听大家的讲解。
用法不对。你如果是想要key,value这种形式的数据结构,那肯定是用map。元组是TS的概念,可以用于表示已知数组里的元素不是同一个类型。你用下标超过现在length的数来去存新的元组元素(这个应该在TSC编译时会报错),就会导致元组的长度变的很长。向元组里添加/删除元素用的方法是push/pop。
https://www.typescriptlang.org/docs/handbook/basic-types.html
有时候这种东西别人讲解了自己不一定能理解,最好是能自己去理解一下这些教基础的东西,比自己听别人讲更有用。想当年我学习的时候也是自己弄了好久才明白的
多谢老板,哈哈,原来如此,所以很迷惑。

