Ich versuche, einen Index von einer Zahl in einer 2D-Array zu finden, aber Konsole gibt ausmehrdimensionales Array indexOf nicht funktioniert js
Uncaught Typeerror:. Block [((a * 10) + c)] indexOf ist keine Funktion
Ich denke, es hat etwas mit der Art des Zugriffs auf das Array-Element zu tun, aber scheint nicht das Problem zu finden.
Hier ist der Code.
var block = [];
var temp;
var del;
for(var a = 0;a < 9;a++){
for(var b = 0;b < 9;b++){
temp = parseInt(prompt("enter element number " + b + " of row number " + a));
console.log(temp);
if(temp>0){
block[a*10+b] = temp;
}else{
block[a*10+b] = [1,2,3,4,5,6,7,8,9];
}
// console.log(block[a*10+b]);
}
}
for(var a = 0;a < 9;a++){
for(var b = 0;b < 9;b++){
if(typeof(block[a][b]) == "number"){
for(var c = 0;c < 9;c++){
if(c != b){
del = block[a*10+c].indexOf(b);
block[a*10+c].splice(del,1);
}
}
}
}
}
Erstens, ich tun würde: 'console.log (Block [((a * 10) + c)])', um zu sehen, was das ist. Genauer gesagt zeigt der Fehler, den Sie bekommen, an, dass der Wert wahrscheinlich ein Objekt ist und Objekte keine 'indexOf'-Methode haben ... Strings tun, aber Sie haben wahrscheinlich keine Zeichenkette gespeichert. Beachten Sie außerdem, dass ALLE von einer "Eingabeaufforderung" zurückgegebenen Daten als Zeichenfolge zurückgegeben werden. Selbst wenn eine Zahl eingegeben wurde. –
Zahlen haben keine indexOf() -Methode – dandavis
Sie erstellen kein mehrdimensionales Array, * block * ist nur ein einfaches Array. Die erste Schleife fügt Elemente in den Indizes 0 bis 99 in einer Weise ein, die in einer einzigen Schleife von 0 bis 99 möglich ist. Nur wenn Sie einen negativen Wert eingeben, wird ein Element von * block * ein Array sein [a] [b]! = "Nummer" '. Aber dann greifen Sie auf 'Block [a * 10 + c] '. – RobG