上使用Array.IndexOf如果我有一個鋸齒形陣列設置了這樣的:既鋸齒狀排列
[0][0]{128}
[0][1]{512}
[1][0]{64}
我怎麼會得到多少的指標。所以如果我試圖得到64
,我會得到類似於0,1
的東西,指示物品的索引。我嘗試使用Array.IndexOf()
方法,但我得到-1
,因爲它不是爲鋸齒形陣列構建的。輸出格式並不重要。它可以是一個字符串,兩個整數,一個字節數組,任何東西。
上使用Array.IndexOf如果我有一個鋸齒形陣列設置了這樣的:既鋸齒狀排列
[0][0]{128}
[0][1]{512}
[1][0]{64}
我怎麼會得到多少的指標。所以如果我試圖得到64
,我會得到類似於0,1
的東西,指示物品的索引。我嘗試使用Array.IndexOf()
方法,但我得到-1
,因爲它不是爲鋸齒形陣列構建的。輸出格式並不重要。它可以是一個字符串,兩個整數,一個字節數組,任何東西。
試試這個:
public static Tuple<int, int> IndexOf<T>(this T[][] jaggedArray, T value)
{
for (int i = 0; i < jaggedArray.Length; i++)
{
T[] array = jaggedArray[i];
for (int j = 0; j < array.Length; j++)
if (array[j].Equals(value))
return Tuple.Create(i, j);
}
return Tuple.Create(-1, -1);
}
你可以使用它作爲:
int[][] myArray = ...
Tupple<int, int> position = myArray.IndexOf(64);
或爲矩陣:
public static Tuple<int, int> IndexOf<T>(this T[,] matrix, T value)
{
int width = matrix.GetLength(0);
int height = matrix.GetLength(1);
for (int x = 0; x < width; ++x)
for (int y = 0; y < height; ++y)
if (matrix[x, y].Equals(value))
return Tuple.Create(x, y);
return Tuple.Create(-1, -1);
}
你可能還是要檢查NULL值或空數組,但這取決於你。
你爲什麼要複製這個解決方案? http://stackoverflow.com/questions/3260935/finding-position-of-an-element-in-a-two-dimensional-array –
我以爲相同的帕維爾,但他提供的頂級解決方案是不同的。 – Frayt
嗨,請參考:http://stackoverflow.com/questions/3260935/finding-position-of-an-element-in-a-two-dimensional-array –