2017-04-01 35 views
0
exports.equipp = function(user, User, msg) { 

    var itemname = msg.content.slice(8); 

    User.find({id: user.id}, function(err, usser) { 

     for(i = 0; i < usser[0].inventory.length; i++) { 

      if (usser[0].inventory[i].name == itemname) { 


       var Item = usser[0].inventory[i]; 

       for (j = 0; j < usser[0].equipped.length; j++) { 

        if (Item.type == usser[0].equipped[j].type) { 

        } 
        if (j == usser[0].equipped.length -1) { 

        } 
       } 
      } else { 

       if (i == usser[0].inventory.length -1) { 

        msg.reply("You dont have that Item"); 

       } 
      } 
     } 
    }) 
} 

我在最後的if (j == usser[0].equipped.length -1)處有一些porblems,它永遠不會經過,因此永遠不會將項目添加到空白庫存中。我有隻包含名稱,Dmg和類型的項目,檢查類型是否匹配,然後如果他們將項目添加到已配備的陣列中,並將其從項目陣列中移除,反之亦然,在數組中我沒有需要添加它並從另一個數組中提取它的項目,但是我的代碼在json對象數組上面聲明的點失敗{ 「type」:「Healm」, 「armor」: 4, 「名」: 「入門Healm」 },在json數組中遇到了一些問題

+1

請閱讀'json'標記的使用說明:此問題與JSON無關。 – trincot

+0

啊對不起忘了包括我的數組在json中的那條信息讓我編輯@trincot中的代碼 – KingCosmic

+0

您的代碼示例非常長,很難解析,因此您不太可能得到一個好的答案。您應該嘗試將其劃分爲易於閱讀和重現的內容,以便人們可以更輕鬆地找出問題所在。 請閱讀[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve)。 –

回答

0

取而代之的是:

for(i = 0; i < usser[0].inventory.length; i++) { 
     if (usser[0].inventory[i].name == itemname) { 
      var Item = usser[0].inventory[i]; 
      // rest of code ... 
     } else { 
      if (i == usser[0].inventory.length -1) { 
       msg.reply("You dont have that Item"); 
      } 
     } 
    } 

務必:

for(i = 0; i < usser[0].inventory.length; i++) { 
     if (usser[0].inventory[i].name == itemname) { 
      var Item = usser[0].inventory[i]; 
      // rest of code ... 
     } 
    } 
    if (!Item) { 
     msg.reply("You dont have that Item"); 
    } 

決定性因素是否找到該項目是您已定義Item。它循環你發現Item沒有設置,你知道該項目不在列表中。當列表爲空時,這顯然也適用。