我有一个列数组,代表网格中的一行数据。
它看起来像这样:
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)
)
];