angular - 为什么我的变量没有在 Typescript 中被指定为数组?

标签 angular typescript

我已经声明了一个变量“列”,如下所示:

 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/

相关文章:

Angular 6 - 如何在 ngComponentOutlet 中传递数据

android - 如何在ionic2其他ts文件中导入配置ts文件

html - ( Angular )图像不会显示

typescript - 如何将元组二维数组中的元组索引 0 推断为文字类型?

javascript - 如何在 FormControl 中使用 mat-slide-toggle?

angular - 如何知道 Observable 的更改值或最终值是否已设置

html - PrimeNG 表 [rowHovered] 不适用于设置了单元格背景的单元格

javascript - typescript 中的前置条件检查

typescript - typescript d.ts 文件中的枚举

javascript - ASP.NET MVC4 显示模式不加载 TypeScript 输出