[英]Converting JavaScript to C# - difficulty with constructors and arrays
[英]Converting JavaScript to C# - arrays
我是C#的新手,在轉換某些數組類型時遇到麻煩。
JavaScript代碼:
function toMatrix(list, elementsPerSubArray) {
var matrix = [], i, k;
for (i = 0, k = -1; i < list.length; i++) {
if (i % elementsPerSubArray === 0) {
k++;
matrix[k] = [];
}
matrix[k].push(list[i]);
}
return matrix;
}
我曾嘗試轉換代碼,但在C#中遇到數組問題。
這對某些人可能很容易,我將如何做?
謝謝。
這是一個嘗試。 我為項目類型使用了通用參數:
List<List<T>> toMatrix<T>(List<T> list, int elementsPerSubArray)
{
var matrix = new List<List<T>>();
int k = -1;
for (int i = 0 ; i < list.Length; i++)
{
if (i % elementsPerSubArray == 0)
{
k++;
matrix.Add(new List<T>());
}
matrix[k].Add(list[i]);
}
return matrix;
}
測試:
List<int> input = new List<int> { 1, 2, 3, 4, 5, };
var result = toMatrix(input, 2);
foreach (var outer in result)
Console.WriteLine(string.Join(", ", outer));
Linq版本看起來像這樣。
using System.Linq;
using System.Collections.Generic;
public T[][] ToMatrix<T>(T[] array, int elementsPerSubArray)
{
var list = new List<T[]>();
while (array.Any())
{
list.Add(array.Take(elementsPerSubArray).ToArray());
array = array.Skip(elementsPerSubArray).ToArray();
}
return list.ToArray();
}
轉換可以在一行中完成:
public T[] ToArray<T>(T[][] matrix)
{
return matrix.Aggregate(new T[0], (array, matrixRow) => array.Concat(matrixRow).ToArray());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.