仅当数组中尚不存在该对象时才将对象添加到数组

时间:2016-03-31 05:08:31

标签: javascript arrays object

我正在尝试建立一个库存系统,当获得一个项目时,它只会将项目放入数组中,如果数组中尚不存在该项目。然后无论它是否被放入数组,找到数组中的项目并将其数量增加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的新手,如果有人能指出我正确的方向,我将不胜感激

4 个答案:

答案 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>