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)
的末尾有一些问题,它永远不会通过,因此永远不会在空库存中添加项目。我有的项目atm只包含Name,Dmg和Type im,检查类型是否匹配然后如果我们将项目添加到配备的阵列并将其从项目数组中删除,反之亦然,对于已配备的项目,当有数组中没有该类型的项目我需要添加它并从其他数组中重新调用它但是我的代码在上面指出的json对象数组中失败{
&#34;输入&#34;:&#34; Healm&#34;,
&#34;盔甲&#34;:4,
&#34; name&#34;:&#34; Starter Healm&#34;
},
答案 0 :(得分: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
未设置,您知道该项目不在列表中。当列表为空时,这显然也有效。