Próbuję wypełnić tablicę zerami i te w taki sposób, że jeśli zorganizujesz go w 6 o 6 siatce, pozostanie losowo rozproszone bezpośrednio w sąsiedztwie ze sobą.

Na przykład:
001101
. 111001
. 001011
. 001110
. 111000.

W celu sprawdzenia, czy jest jeden obok potencjału, muszę sprawdzić 4 wartości tablicy. Tutaj mam trudności. Próbowałem wdrożyć rozwiązania z innych pytań na stackoverflow, ale nie mogę uruchomić, aby pracować specjalnie z tym oświadczeniem.

function initialize(){
    tile = new Array(6);
    first = true;
    for(i = 0; i < 6; i++){
        tile[i] = new Array(6);
        for(j = 0; j < 6; j++){
            //This is where I'm having difficulty
            if(Math.random() < .75 && tile[i + 1][j + 1] != 'undefined' || tile[i - 1][j - 1] != 'undefined' || tile[i - 1][j + 1] != 'undefined' || tile[i + 1][j - 1] != 'undefined' || first){
                tile[i][j] = 1;
                first = false;
            }else{
                tile[i][j] = 0;
            }
        }
    }
}
3
user1890615 10 grudzień 2013, 22:09

2 odpowiedzi

Najlepsza odpowiedź

Zapomniałeś dodać typeof

W ten sposób zazwyczaj sprawdzałbyś niezdefiniowany.

typeof tile[i - 1][j + 1] === 'undefined'

Więcej informacji na temat TypeOf


Edytuj, na swój komentarz, robisz takie rzeczy

typeof tile[i - 1][j - 1] !== 'undefined'

I uzyskanie błędu

Niepudonowany TypeError: Nie można odczytać właściwości "1" niezdefiniowanego lub nieudanego TypeError: nie można odczytać właściwości "-1" niezdefiniowanego.

Dwie rzeczy: które próbujesz uzyskać dostęp do indeksu -1, wydaje się, że zawsze zawiedzie. Powiedziane, nawet gdy naprawisz tego błędu poza jednym, wyrażenie taką jak

tile[i - 1][j - 1]

Zawsze będzie wyświetlany błąd

tile[i - 1]

Sam jest niezdefiniowany. Musisz więc sprawdzić osobno. Coś jak

(typeof tile[i - 1] === 'undefined' || typeof tile[i - 1][j + 1] === 'undefined')

W ten sposób, jeśli tile[i - 1] jest niezdefiniowany, całe wyrażenie "zwarciem" przed otrzymaniem błędu.

4
Adam Rackis 10 grudzień 2013, 18:18

Sprawdzasz równość ze strucią "niezdefiniowaną", a nie z niezdefiniowaną wartością. Próbować

tile[i + 1][j + 1] !== undefined

(Brak pojedynczych cytatów wokół nieokreślonych).

Dyskusja tutaj: Jak sprawdzić "Undefined" w JavaScript?

1
Community 23 maj 2017, 12:11