我已经声明了一个变量“列”,如下所示:
public columns:any[];
并像这样分配它:
this.columns = Array<any> (Object.keys(this.data[0]));
console.log(this.columns[0]);
我在控制台中得到的输出是这样的:
["inventoryId", "hostName", "environment", "databaseName", "applicationName", "rdbmsVersion", "asmVersion", "os", "replicationDb", "appsSupportDl", "appGrp", "dbaGrp", "dbaDl", "dbaCrqImpGrp"]
控制台不应该只打印 "inventoryId"
作为输出吗?
最佳答案
在通过传入数组应具有的值来创建数组时,切勿使用 Array
构造函数;请改用数组文字。 (但您也不想这样做,请继续阅读。)仅当您向其传递单个数字参数来创建具有该长度(并且没有条目)的数组时,才使用 Array 构造函数,这是很少见的。
但是您根本不必在代码中创建数组;如果您想要对象的键数组,这就是 keys
直接为您提供的:
this.columns = Object.keys(this.data[0]);
为什么你的代码不起作用:如果你向它传递多个参数或一个不是数字的参数,则 Array 构造函数会通过将你提供的参数放入数组中来创建一个数组。您给它一个数组作为参数,因此它将它作为唯一的条目放入单条目数组中。
¹ 事实上,Array
根据参数的数量以及第一个参数的类型执行不同的操作,这是不使用它的原因之一。但它可以方便的几个地方之一是当您创建一个填充有单个统一值的数组时:
const result = Array(3).fill(42); // [42, 42, 42]
Array(3)
部分创建一个 length = 3
的空数组(一个稀疏数组)。 fill
然后用您指定的值(上面的 42)填充那些缺失的条目。
关于angular - 为什么我的变量没有在 Typescript 中被指定为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61774869/