将一维数组显示为行和列

Posted

技术标签:

【中文标题】将一维数组显示为行和列【英文标题】:Displaying 1d array as rows and columns 【发布时间】:2020-01-01 17:20:43 【问题描述】:

我有一个由品牌名称组成的一维数组,并希望以列大小固定为“3”并且行号随着数组大小的增长而扩展的格式显示它。比如数组中有11个品牌,我想这样显示;

X X X
X X X
X X X
X X

这是我尝试实现所需逻辑的嵌套 for 循环:

int brandCount = Model.CampainBrands.Count();
int colLength = brandCount < 3 ? brandCount : 3; // Toplam marka sayısının 3'ün altında olması durumunu güvenceye alır
int rowLength = brandCount / colLength + (brandCount % colLength != 0 ? 1 : 0);
int counter = 0;
for (int i = 0; i < rowLength; i++)

    <div class="row">
    @for (int j = 0; j < colLength && counter < brandCount; j++, counter++)
       
        var item = Model.CampainBrands[counter];
        <div class="col-md-4">
            <a href="@Url.Action("List","Campain",new brandCode = item.Code)">
                <div class="card" style="width: 5rem;">
                    <img class="card-img-top" src="@item.ImageUrl"   />
                    <div class="card-body">
                        <p class="card-text">@item.Name</p>
                    </div>
                </div>
            </a>
        </div>
    
    </div>

有没有办法改进这个算法?谢谢。

【问题讨论】:

怎么样flexboxgetbootstrap.com/docs/4.0/utilities/flex 如果它是 c# ,那么为什么不能用这三个列名作为属性创建一个自定义类型(类)。然后创建一个这种类型的列表。然后就很容易完成任务了 你很幸运,我没有为此对你表示不满! :P 【参考方案1】:

这样的?

var numbers = Enumerable.Range(1, 11).ToList();
const int rowlength = 3;

for (int i=0; i<numbers.Count; i=i+rowlength)

    Console.Write("<tr>");
    for (int j=i; j<numbers.Count && j<i+rowlength; j++)
    
        Console.Write(numbers[j] + " ");    
    
    Console.WriteLine("</tr>");

外部循环(“i”)一次循环遍历列表 3,并且应该在行周围添加“tr”标签。

内部循环(“j”)使用列表的下 3 个项目,除非剩余的项目不够。这些将是“td”项目。

【讨论】:

你试过了吗?您需要一个&amp;&amp; 来防止超出总长度(防止索引超出范围)并且还在每行(最多)3 个项目处停止

以上是关于将一维数组显示为行和列的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据排列为行和列?

Excel VBA - 下标超出一维数组的范围

numpy 数据处理

考虑到行跨度和列跨度,如何从一维数组创建动态 html 表?

二维数组与一维数组的比较

vba中怎么选取二维数组中的某一行或某一列?