Ich weiß nicht, was ich falsch mache, aber dieser Code nach der ersten Ausführung ändert mein recipesData
Objekt, und auf der zweiten Ausführung bekomme ich sehr große Variablen (weil Code Verwendung recipesData
).Node.js ändert irgendwie mein Objekt mit rekursive Funktion
Wenn ich Debugger-Objekt (recipesData) zu ändern beginnt hier:
child[child_part] *= craft[part];
child
ist noch eine weitere Variable nicht auf recipesData
verwandt.
Dies ist der Code, den ich verwenden:
first ex. second execute.
282 11340
336 69498
390 108918
82 3400
82 3397
27 745
270 10629090
27 19683
// Some object with date
var recipesData = {
'test1': {
'example1': 544,
'example2': 323
},
'test2': {
'example1': 123
},
}
// Function that I call from main file
module.exports.getFinished = function (item, stock) {
// Create temp 'recipes' variable
var recipes = recipesData[item];
// Execute recursive func
var basics = getBasics(recipes);
return basics;
};
// Create 'finished' empty object
var finished = {};
// My recursive fuction that works pretty nice at first
function getBasics(craft) {
for (var part in craft) {
for (var recipe in recipesData) {
if (recipesData.hasOwnProperty(part)) {
var child = recipesData[part];
break;
} else
child = null;
}
if (child) {
for (var child_part in child)
// HERE it's CHANGE my 'recipesData' object at the top!
child[child_part] *= craft[part];
getBasics(child);
} else {
if (finished.hasOwnProperty(part))
finished[part] += craft[part];
else
finished[part] = craft[part];
}
}
return finished;
}
Vielen Dank für Antwort verstehe ich die Grundidee, aber immer noch nicht wissen, wie man ohne Abhilfe ist es zu beheben wie echte Kopie machen ... –