ich ein C# Skript wie unten haben:Wie dieses C# Skripte Javascript konvertieren
public List<MazePath> BreakIntoConnectedPaths()
{
List<MazeVertex> remainVertices = new List<MazeVertex>(vertices);
List<MazePath> paths = new List<MazePath>();
while (remainVertices.Count > 0)
{
MazePath path = new MazePath();
path.entrancePosition = entrancePosition;
path.exitPosition = exitPosition;
VisitCell(path, remainVertices.First(), null, remainVertices);
paths.Add(path);
//Store the coordinate for entrance and exit
}
return paths;
}
void VisitCell(MazePath path, MazeVertex ver, MazeVertex parent, List<MazeVertex> remainVertices)
{
remainVertices.Remove(ver);
path.Add(ver);
for (int i = 0; i < ver.connectVertices.Count; i++)
{
MazeVertex ver2 = ver.connectVertices[i];
if (ver2 != parent)
{
VisitCell(path, ver2, ver, remainVertices);
}
}
}
will ich es wie unten
BreakIntoConnectedPaths = function() {
var remainVertices = _.cloneDeep(this.vertices);
var paths = [];
while (remainVertices.length > 0) {
var path = new Path();
path.entrancePos = this.entrancePos;
path.exitPos = this.exitPos;
this.VisitCell(path, remainVertices[0], null, remainVertices);
paths.push(path);
// Store the coordinate for entrance and exit
}
return paths;
}
VisitCell = function(path, vertex, parentVertex, remainVertices) {
_.remove(remainVertices, function(v) {
return v.x === vertex.x && v.z === vertex.z;
});
path.Add(vertex);
for (var i = 0; i < vertex.connectVertices.length; i++) {
var connectedVertex = vertex.connectVertices[i];
// if (parentVertex && (connectedVertex.x !== parentVertex.x || connectedVertex.z !== parentVertex.z)) {
if(parentVertex && _.isEqual(connectedVertex, parentVertex)) {
VisitCell(path, connectedVertex, vertex, remainVertices);
}
}
}
Das _
Symbol hier ist lodash Zeichen Javascript konvertieren.
Nachdem ich Javascript-Code konvertiert habe, ist das Verhalten dieser Funktionen mit C# ein Unterschied. Mit den gleichen vertices
Daten war das paths
Array mit der Differenzgröße zurückgekommen. Vielen Dank für das Lesen und bitte helfen Sie mir, wenn Sie meinen Fehler hier sehen.
"Das Verhalten ist anders" sagt uns nicht viel über das Problem. – David
Erwähnen Sie die genaue Fehlermeldung, die Sie bekommen! – Vikrant
Nachdem ich Javascript-Code konvertiert habe, ist das Verhalten dieser Funktionen anders als bei C# one. Mit den gleichen "Vertices" -Daten war das "Paths" -Array mit der Differenzgröße zurückgekehrt. – ChickenSoups