簡體   English   中英

檢查數組中特定索引處的值?

[英]Check value in array at specific index?

我遇到了一些麻煩...

基本上,我有一個用於存儲圖塊(帶有顏色等的基本div的二維數組)的數組,可以這樣做來更改特定圖塊的屬性;

world[x][y].style blabla somehting

現在,我開始做一些尋路,以便能夠在這些圖塊上四處走動,可以說我有一個10x10的圖塊網格,范圍從-5,-5到5.5(坐標)。

我坐在-5,-5磁貼上,然后單擊某處以“開始尋路”,尋路基本上只是找到8個相鄰的磁貼並返回它們,然后選擇一個使我靠近的磁貼,然后執行此操作直到我達到目標為止的X倍的時間。

如果我站在中間(0,0)並嘗試去某個地方,這沒問題,但是由於我處於“世界”的一角,因此在搜索相鄰的圖塊時會遇到一些問題;

-#ooo o--

--oooo o--

--oooo o--

--oooo o--

--oooo o--

可以說這是我的世界,#是角色,o是空瓦,-只是空深淵(我不能成為的地方)

現在我想去X。

-#ooo o--

--oooo o--

--oo X o o--

--oooo o--

--oooo o--

所以我開始了我的小尋路算法,但是當它從我所在的位置搜索相鄰的圖塊時,由於沒有從我的位置向左,向左,向下,向左或向上或向上的圖塊,它會返回錯誤。

-#+ oo o--

-+ + oo o--

--oooo o--

--oooo o--

--oooo o--

(+)是可用的圖塊,但它嘗試在我周圍搜索更多圖塊,這會導致錯誤。

我試圖通過使用來排除不存在的圖塊;

if (world[x][y] !== null) {}
if (world[x][y] != null) {}
if (world[x][y] !== 'undefined') {}
if (world[x][y] != 'undefined') {}
if (!world[x][y]) {}

但是然后在if語句中給出錯誤,而不是實際的“ tile returning” ...

那么,如何預先檢查特定索引處(或2個特定索引處)數組中是否有內容?

另外請注意,我的數組確實存在一些間隙,因為我的世界不僅是可行走的瓷磚。

你需要驗證的行/列world[x]檢查前world[x][y]

if (!world[x] || !world[x][y]) {
    // Tile does not exist
}else{
    // Tile exists
}

如果您單獨將此行輸入到控制台中:

console.log(typeof x); //output: undefined

在沒有定義任何名為“ x”的元素的情況下,該語句的計算結果為“未定義”。

然后可能會在if ... else語句中使用typeof來檢查未定義的類型(這將是尚不存在的類型)。

解決此問題的一種有效方法是使世界更寬(12x12而不是10x10),並在所有外部圖塊中使用深淵標記。 現在,角色將永遠不會測試未定義的圖塊,並且您的算法將起作用。

我建議您在詢問“平鋪”之前檢查一下索引(x和y)。 如果您有能力要求返回一個圖塊,那么可以嘗試一點算法來檢查是否可以在什么方向上返回一個圖塊。

作為建議,您可以編寫一個函數,該函數返回實際的“相鄰/相鄰”磁貼_using_the_index_values_,同時考慮到沒有“ -5”的磁貼或“ +5的右磁貼”等。

這意味着並非所有“相鄰圖塊”陣列都將具有相同數量的圖塊,但是您可以輕松地操縱,遍歷,知道(of)長度和數組。

如果我有“尋路算法”的更多詳細信息,我也許可以編寫示例代碼。 (希望能幫助到你。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM