我正在尝试建立一个库存系统,当获得一个项目时,它只会将项目放入数组中,如果数组中尚不存在该项目。然后无论它是否被放入数组,找到数组中的项目并将其数量增加1.这就是我现在所拥有的:
function newItem(){
apple = new uniqueItem("apple", "resources/apple.png")
if (inventory.indexOf(apple) != null){
inventory.push(apple)
}
inventory[inventory.indexOf(apple)].amount += 1
}
我仍然是javascript的新手,如果有人能指出我正确的方向,我将不胜感激
答案 0 :(得分:1)
为您的工作提供此Array.prototype.includes()
方法。
var o1 = {a:1,b:2},
arr = [];
arr.push(o1);
arr.includes(o1); // <- true so don't add again
有关此检查的更多信息Array.prototype.includes()
,
答案 1 :(得分:0)
你可以自己做!只需遍历所有库存并检查您要插入的项目是否已存在。如果它不存在则插入它。
答案 2 :(得分:0)
你不应该在这里使用indexOf。使用类似下面的内容迭代数组并与其中的每个对象进行比较。 indexOf将字符串作为值而不是对象。
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) { return true; }
}
return false;
}
答案 3 :(得分:0)
我认为这对你也有帮助
<p> Year : <select style="width: 150px;">
<option value ="2014">2014</option>
<option value ="2015">2015</option>
<option value =" '2015">2015</option>
</select>
</p>
<input type="submit" value="Submit">
<input type="submit" value="cancel">
</center>
</body>