Ich habe eine Funktion mit rekursiven Ansatz geschrieben, um die Werte aus verschachtelten Array zu erhalten. Das Problem ist, ich kann die globale Variable nach jedem Aufruf nicht zurücksetzen. Hier werden die Ergebnisse nach jedem Aufruf an das vorherige Ergebnis angehängt, anstatt ein neues Ergebnis zu erhalten. Ich weiß, globale Variable wird nicht zurückgesetzt, so dass Daten immer anhängen werden. Aber ich kann die Variable in der Funktion nicht als ihren rekursiven Aufruf definieren.Wie kann ich die globale Variable nach dem Aufruf der Funktion zurücksetzen?
Wie kann ich diese Situation vermeiden? Jede Hilfe wäre willkommen.
var res = [];
function getData(arr) {
if(!Array.isArray(arr)) {
res.push(arr);
return res;
}
for(var i = 0; i < arr.length; i++) {
getData(arr[i]);
}
return res;
}
getData([1, [2], [3, [[4]]]]); // res = [1, 2, 3, 4]
getData([[["a"]], [["b"]]]); // res = [1, 2, 3, 4, "a", "b"], expected is res = ["a", "b"];
getData([1, {}, [3, [[4]]]]);
einfach das Ergebnis Array machen ein Parameter der Funktion? 'Funktion getData (arr, res) {...}' und 'getData ([...], [])'. –
@FelixKling Thanks..es ist ein guter Ansatz, aber ich muss keinen zusätzlichen Parameter übergeben. –