亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法讀取未定義的“在線”屬性

無法讀取未定義的“在線”屬性

躍然一笑 2023-03-03 10:51:50
這是我的代碼,我試圖用 countOnline 函數計算我們有多少在線用戶。我收到錯誤消息“無法讀取未定義的‘在線’屬性”;function countOnline(usersObj) {  let amount=0;  for(let user in usersObj){    if(usersObj.user.online){      amount++;    }  }  return amount;}let a = countOnline({  Alan: { online: false },  Jeff: { online: true },  Sarah: { online: false }});console.log(a);
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您正在嘗試獲取user應該是用戶名的屬性。在迭代對象鍵時使用[user]而不是。.user.


請參閱下面的固定代碼段:


function countOnline(usersObj) {

   let amount=0;

   for(let user in usersObj){

     if(usersObj[user].online){ // <-- see, I placed user in [ ]

       amount++;

     }

   }

   return amount; 

}

    

let a = countOnline({

   Alan: { online: false },

   Jeff: { online: true },

   Sarah: { online: false } 

});

    

console.log(a);

替代解決方案


您可以以更簡潔和可讀的方式迭代對象值,例如使用Object.values() method,這將返回您案例中所有用戶的數組,因此您只需要減少它。


function countOnline(usersObj) {

   return Object.values(usersObj).reduce((total, user) => user.online ? total + 1 : total, 0)

}

    

let a = countOnline({

   Alan: { online: false },

   Jeff: { online: true },

   Sarah: { online: false } 

});

    

console.log(a);

甚至更短,但性能更差:


let usersObj = {

   Alan: { online: false },

   Jeff: { online: true },

   Sarah: { online: false } 

};


let onlineCount = Object.values(usersObj).filter(u => u.online).length;


console.log(onlineCount);


查看完整回答
反對 回復 2023-03-03
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

您正在嘗試訪問userObj.user.online,而它應該是userObj[user].online:


function countOnline(users) {


  let amount = 0;

  

  for (const user in users) {

    if (users[user].online) {

      amount++;

    }

  }


  return amount;

}


const a = countOnline({

  Alan: {

    online: false

  },

  Jeff: {

    online: true

  },

  Sarah: {

    online: false

  }

});


console.log(a);


function countOnline(usersObj) {

  

  let amount=0;

  for(let user in usersObj){

    if(usersObj.online){

      amount++;

    }

      

  }

  return amount;

  

}

let a = countOnline({ Alan: { online: false }, Jeff: { online: true }, Sarah: { online: false } });


console.log(a);


查看完整回答
反對 回復 2023-03-03
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

您用于 in.dictionary 不像數組那樣可迭代。你需要鑰匙,價值。試試這個。


function countOnline(usersObj) {

  let amount=0;


for (const [key, value] of Object.entries(usersObj)) {

    if(value.online){

        amount++;

    }

}


  return amount;

}


let a = countOnline({

  Alan: { online: false },

  Jeff: { online: true },

  Sarah: { online: false }

});


console.log(a);


展開片段for in如果您想在代碼中使用循環,請這樣做


let a = countOnline([

      {Alan: { online: false }},

      {Jeff: { online: true }},

      {Sarah: { online: false }}

    ]);


查看完整回答
反對 回復 2023-03-03
  • 3 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號