Ich habe eine Reihe von Punkten, die ich in eine Reihe von Zeilen ändern möchte. Verwenden Sie Javascript-Array reduzieren gegeben n Eingänge, um m Ausgänge
dies ist ein Beispiel dafür, was ich an den Code will
[p1, p2, p3] -> [line1, line2]
jede Schleife:
(p1, p2) -> line
(p2, p3) -> line
Der üblicher Weg, dies zu tun ist:
const triangle = [[0,0], [0,1], [1,2]]
const lines = []
for (let i = 1; i < triangle.length; ++i) {
const slope = findSlopeFromPoints(...triangle[i - 1], ...triangle[i])
const yIntercept = findYIntercept(...triangle[i], slope)
lines.push({
slope,
yIntercept
})
}
Dies ist die Schlüsse kann ich mit Array.prototype.reduce
bekommen. Aber es fühlt sich sehr viel schwieriger zu
const initial = {
array: [], // actual returned array we care about
lastPoint: null // "triangle[i - 1]"
}
const linesR = triangle.reduce((lines, point) => {
if (lines.lastPoint === null)
return {
...lines,
lastPoint: point
}
else {
const slope = findSlopeFromPoints(...lines.lastPoint, ...point)
const yIntercept = findYIntercept(...point, slope)
lines.array.push({
slope,
yIntercept
})
lines.lastPoint = point
return lines
}
}, initial)
Kurz auf Grund gibt es einen besseren Weg, N
Eingänge in N - 1
Ausgänge zu kombinieren, verwenden zu reduzieren?
Was ist Ihre Frage? –
fügen Sie bitte ein gewünschtes Ergebnis und die Datenstruktur hinzu. –
Entschuldigung, ich aktualisierte die Frage – andykais