0
私はオブジェクトプログラミングに関する初心者です。私は、オブジェクトをChromeコンソールに記録していて、奇妙な動作に気付かなかった。Chromeコンソールでオブジェクトプロパティが定義されていないと表示されます
一部のプロパティには、ログの一番下にあるとして、未定義表示されますが、一番上に値を持っています。
オブジェクトを関数から返すと、同じプロパティが定義された状態で返されます。したがって、Dirty Sock
とMicrophone
が定義されています。では、なぜコンソールはそうではないと思いますか?
マイコード:arr1
とarr2
ため
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;
}, {});
}
}
値は以下の通りです:
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"]
];
あなたが渡している 'arr2'の値は何ですか? – Kevin
質問に「arr1」と「arr2」の値が追加されました –
名前にエラーがあるようです。注意ヘアピンとボウリングボールは値を持ち、配列間の2つの共通名です。これらの配列は、 "Half-Eaten Apple"と "Dirty Sock"または "Microphone"の間に暗黙的に接続することはできません – Kevin