簡體   English   中英

Chrome控制台將對象屬性顯示為未定義

[英]Chrome console shows object property as undefined

我是對象編程的新手。 我正在將對象記錄到Chrome控制台,並且無法注意到奇怪的行為。

一些對象屬性顯示為未定義,並且好像它們同時具有值

一些屬性在日志的底部顯示為undefined,但在頂部具有值。

當我從函數中返回對象時,它會返回已定義的相同屬性,因此會定義Dirty SockMicrophone 那么,為什么控制台認為它們不是?

我的代碼:

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;
    }, {});
  }
}

arr1arr2值如下:

   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"]
];

console.log輸出(在Chrome控制台中)末尾的信息框可能會指出該輸出剛剛被重新計算。 如果您想在輸出時了解對象的狀態,建議先創建一個字符串,然后再輸出。 在您的示例中,嘗試:

console.log(JSON.stringify(currentInv));

然后看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM