如何检查数组中是否存在元素?

时间:2016-02-17 20:14:16

标签: javascript arrays if-statement

我有一个不同ID的数组。此数组是从查询填充的,因此每次ID的数量可以不同。所以我想检查我的eventID是否存在于该数组中,如果eventID在数组中有匹配的ID我想要提醒消息,如果不是我想提交我的表单。我的问题是当eventID与数组中的任何记录都不匹配时,我的表单没有提交。这是我的代码:

 function saveSlots(){
                var records = [];
                var eventID = '#eventID#';
                //here is my array
                records.push(55,56,78,90,44); 

                for(var i=0; i< records.length; i++){
                    if(records[i] == eventID){
                        alert('duplicate')
                    }else{
                        //Submit the form
                    }
                }   

            }

出于某种原因,我的其他人永远不会被执行。在我的if语句中,我只需要检查数组中的一个记录是否与eventID匹配,如果我不需要检查数组中的其他ID。如果有人可以帮助解决这个问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

现在编写代码的方式,您将为每个不匹配的元素提交表单一次,因为您的条件if-else将被检查数组中的每个项目。 / p>

我建议使用变量标记发现重复。然后,在循环结束后检查该变量并决定下一步该做什么:

function saveSlots() {
    var records = [];
    var eventID = '#eventID#';
    //here is my array
    records.push(55, 56, 78, 90, 44);

    var foundDuplicate = false;

    for (var i = 0; i < records.length; i++) {
        if (records[i] == eventID) {
            foundDuplicate = true;
        }
    }

    if(foundDuplicate) {
        alert('Duplicate found!');
    } else {
        alert('Submit form!');
    }
}

或者,您可以return在找到副本后立即退出该功能:

function saveSlots() {
    var records = [];
    var eventID = '#eventID#';
    //here is my array
    records.push(55, 56, 78, 90, 44);

    var foundDuplicate = false;

    for (var i = 0; i < records.length; i++) {
        if (records[i] == eventID) {
            alert('Duplicate found!');
            return;
        }
    }

    alert('Submit form!');
}

答案 1 :(得分:1)

有几件事可能会阻止你。

  1. 请务必确认您的活动ID。你有一个字符串'#eventID#',在javascript中它会很好,它仍会评估'55'到55,所以你没事,但要确保你看一下这个数字是否正确。

  2. 你的循环将多次调用你的提交,因为你循环通过它。换句话说,60不在你的数组中,所以当它在for循环中查看第一个值55时,它找不到它所提交的,然后当它不匹配时56它再次提交。你应该休息一下;在提交代码中,如果您达到提交,则停止for循环继续。这些多个提交可能会导致问题。甚至更好地使用索引来查找它。如果没有找到,indexOf将返回-1

    function saveSlots(){ var records = []; var eventID = '60'; records.push(55,56,78,90,44); if(records.indexOf(eventID) === -1) { console.log("submission reached"); } }

  3. 你应该确认你的提交工作正常,你可能会发现console.log正在执行,这意味着javascript正在到达正确的区域,但提交似乎不起作用,在这种情况下你知道javascript没问题,但你的提交存在问题。