Ich habe einen Anfänger bei der Objektprogrammierung. Ich habe ein Objekt an der Chrome-Konsole angemeldet und konnte ein merkwürdiges Verhalten nicht übersehen.Chrome-Konsole zeigt Objekteigenschaft als undefined
Einige Eigenschaften erscheinen als am Ende des Protokolls nicht definiert, sondern hat einen Wert an der Spitze.
Wenn ich das Objekt von meiner Funktion zurückgebe, kommt es mit denselben definierten Eigenschaften zurück, daher sind Dirty Sock
und Microphone
definiert. Warum denkt die Konsole, dass sie es nicht sind?
Mein Code:
function updateInventory(arr1, arr2) {
let currentInv = array2DToObject(arr1);
let newItems = array2DToObject(arr2);
console.log(currentInv); //This is the log I'm speaking about.
for(let key in currentInv) {
if(newItems.hasOwnProperty(key)) {
currentInv[key] = currentInv[key] + newItems[key];
delete newItems[key];
} else {
currentInv[key] = newItems[key];
delete newItems[key];
}
}
if(Object.keys(newItems === 0) && newItems.constructor === Object) {
return currentInv;
} else {
return 'A mistake has occured, newItems obj has not been emptied correctly';
}
function array2DToObject (arr) {
return arr.reduce((acc, curr) => {
acc[curr[1]] = curr[0] ;
return acc;
}, {});
}
}
Werte für arr1
und arr2
wie folgt sind:
arr1 = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"]
];
arr2 = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
Was ist der Wert von 'arr2', den Sie übergeben? – Kevin
@Kevin Werte für 'arr1' und' arr2', die zu der Frage –
hinzugefügt wurden Es sieht so aus, als wäre Ihr Fehler in den Namen. Hinweis Hair Pin und Bowling Ball haben Werte und sind die beiden gebräuchlichen Namen zwischen den Arrays. Die Arrays können nicht implizit eine Verbindung zwischen "Half-Eaten Apple" und "Dirty Sock" oder "Microphone" herstellen – Kevin