使用JavaScript,我如何创建一个具有特定宽度(列数)的数组?



我有一个列数组,代表网格中的一行数据。

它看起来像这样:

let row = [rowId,'string value', 'string value 2', 'string value 3'];

我需要根据行将具有的可变列数生成动态数据行。换句话说,我需要初始化数组,使其包含id和X列数(取决于网格将具有的可变列数)。

[id, 'col-1', 'col-2', ...]

我目前有一个荒谬的方法,它的工作原理,看起来像下面:

getNewRow(maxKey: number, rowWidth: number){
switch (rowWidth){
case 1:{
return [maxKey, 'col 1'];
break;  
}
case 2:{
return [maxKey, 'column 1', 'col 2'];
break;  
}
case 3:{
return [maxKey, 'column 1', 'col 2', 'col 3'];
break;  
}
case 4:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4'];
break;  
}
case 5:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5'];
break;  
}
case 6:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6'];
break;  
}
case 7:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6', 'col 7'];
break;  
}
case 8:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6', 'col 7', 'col 8'];
break;  
}
case 9:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6', 'col 7', 'col 8', 'col 9'];
break;  
}
case 10:{
return [maxKey, 'column 1', 'col 2', 'col 3', 'col 4', 'col 5', 'col 6', 'col 7', 'col 8', 'col 9', 'col 10'];
break;  
}
}

maxKey只是确保id列被设置为一个新的唯一值的一种简单方法。

我的问题

  • 是否可以动态地生成一行这样的数据?
  • 是否有一些方法来创建一个数组上有一个动态宽度(基于列的数量)?

Array.from创建一个索引字符串变化的所有col的数组,然后您可以将其扩展到返回的数组中。

const getNewRow = (maxKey: number, rowWidth: number) => [
maxKey,
...Array.from(
{ length: rowWidth },
(_, i) => 'col ' + (i + 1)
)
];

最新更新