Javascript 如何检查数组中的值是否已存在&;如果没有,则将其推入阵列中

Javascript 如何检查数组中的值是否已存在&;如果没有,则将其推入阵列中,javascript,html,arrays,Javascript,Html,Arrays,在Js中工作时,我需要检查数组中的值是否存在&如果存在,则向用户显示错误;如果不存在,则将其推送到数组中。 这是我的代码片段 <html> <body> <label>Enter an New item to add in Stock</label> <br> </br> <input type="text" name=" itemName" id="addItemInStock"> <br><

在Js中工作时,我需要检查数组中的值是否存在&如果存在,则向用户显示错误;如果不存在,则将其推送到数组中。 这是我的代码片段

<html>
<body>
<label>Enter an New item to add in Stock</label>
<br> </br>
<input type="text" name=" itemName" id="addItemInStock">
<br></br>
<p id="errorMsg"></p>
<button onclick="addToStock()">Add</button>
<p id="showList"></p>
<select id="showInDropDown">
    <option disabled selected style="display: block;">Stock Items</option>
</select>
<script>
    var fruitsfromLS = localStorage.getItem("fruits");
    var fruits = fruitsfromLS ? JSON.parse(fruitsfromLS) : ["Banana", "Orange", "Apple", "Mango"];
    //document.getElementById("showList").innerHTML = fruits;
    var newItem = document.getElementById("addItemInStock");

    function addToStock() {
        if ((newItem.value) === "") {
            document.getElementById("errorMsg").innerHTML = "Blank item cannot be added!!";
            document.getElementById("errorMsg").style.display = "block";
        } else if ((newItem.value) === fruits[i].value)) {
        document.getElementById("errorMsg").innerHTML = "aLREADY IN sTOCK!";
        document.getElementById("errorMsg").style.display = "block";
    } else {
        document.getElementById("errorMsg").style.display = "none";
        fruits.push(newItem.value);
        localStorage.setItem("fruits", JSON.stringify(fruits));
        clearAndShow();
    }
    fillSelect();
   }

输入要添加到库存中的新项目




添加

库存项目 var fruitsfromLS=localStorage.getItem(“水果”); var FROUTS=果品泡沫?parse(fruitsfromLS):[“香蕉”、“橘子”、“苹果”、“芒果”]; //document.getElementById(“showList”).innerHTML=fruits; var newItem=document.getElementById(“addItemInStock”); 函数addToStock(){ 如果((newItem.value)==“”){ document.getElementById(“errorMsg”).innerHTML=“无法添加空白项!!”; document.getElementById(“errorMsg”).style.display=“block”; }else if((newItem.value)==fruits[i].value)){ document.getElementById(“errorMsg”).innerHTML=“已上市!”; document.getElementById(“errorMsg”).style.display=“block”; }否则{ document.getElementById(“errorMsg”).style.display=“无”; 水果。推送(newItem.value); setItem(“水果”,JSON.stringify(水果)); clearAndShow(); } fillSelect(); }
请添加您的本地存储代码和fillStcok函数以获得完整的功能。以下代码段用于检查重复项

var水果=[“香蕉”、“橘子”、“苹果”、“芒果”];
//document.getElementById(“showList”).innerHTML=fruits;
var newItem=document.getElementById(“addItemInStock”);
函数addToStock(){
如果(newItem.value==“”){
document.getElementById(“errorMsg”).innerHTML=“无法添加空白项!!”;
document.getElementById(“errorMsg”).style.display=“block”;
}else if(fruits.indexOf(newItem.value)!=-1){
document.getElementById(“errorMsg”).innerHTML=“已上市!”;
document.getElementById(“errorMsg”).style.display=“block”;
}否则{
document.getElementById(“errorMsg”).style.display=“无”;
水果。推送(newItem.value);
}
}
输入要添加到库存中的新项目




添加

库存项目
您可以始终使用Array.prototype.find()方法,只需少量扩展。它是快速和同步的。

简单使用此检查:

!!~array.indexOf(element)
若元素在数组中,则返回true;若元素不存在,则返回false

您还可以使用自己的方法(即contains)扩展数组类型,以便在代码中使用它,如下所示:

Array.prototype.contains = Array.prototype.contains || function(element) {
    return !!~this.indexOf(element);
};

let a = [ -2, -1, 0, 1, 2, 3, 4, 5 ]; // an example of array

console.log( a.contains(-1) );  // true
console.log( a.contains(10) );  // false

不适用于您?不适用,但如果我删除一些数组元素,它将再次导致错误,因此我避免使用indexOfsee:代码中的
I
是什么。
fruits[I]
您还存在本地存储的安全问题和语法错误`}否则((newItem.value)==fruits[I].value)){`插入了很多括号。谢谢你的回答,但如果一些数组元素再次被删除,我看到在if-else条件下使用
indexOf
删除数组元素时会出现错误。我们如何在保持数组完整的情况下实现它?
Array.prototype.contains = Array.prototype.contains || function(element) {
    return !!~this.indexOf(element);
};

let a = [ -2, -1, 0, 1, 2, 3, 4, 5 ]; // an example of array

console.log( a.contains(-1) );  // true
console.log( a.contains(10) );  // false