仅当项目没有't存在于数组中

Append only if item doesn't exists in array

本文关键字:于数组 存在 数组 项目      更新时间:2023-09-26

我有3个选择框,一个代表国家,另一个代表城市,另一种代表城市周围的半径。

在发送和保存数据库中的所有数据之前,我希望用户选择的任何内容都显示在div中。

我正在努力让它发挥作用,但我不知道为什么我会有奇怪的结果。它没有任何作用!,但如果我去掉"!",它对第一个有点作用,但后来我又得到了重复。我不明白我做错了什么。这是代码:

var citySet = new Array;
function appendCity(){                  
    if(!$.inArray($("#businessCityTarget option:selected").text(),citySet)){                            
        $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
        citySet.push($("#businessCityTarget option:selected").text());  
    }
}

任何光棚都将被磨碎

您应该检查=== -1< 0

var citySet = new Array;
function appendCity() {
    if ($.inArray($("#businessCityTarget option:selected").text(), citySet) === -1) {
        $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>");
        citySet.push($("#businessCityTarget option:selected").text());
    }
}

来自文档

$.inArray()方法类似于JavaScript的原生.indexOf()方法,因为当找不到匹配项时,它会返回-1。如果数组中的第一个元素与值匹配,$.inArray()将返回0。

尝试:

if(citySet.indexOf($("#businessCityTarget option:selected").text()) < 0){
    $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
    citySet.push($("#businessCityTarget option:selected").text());
}

你能试试这个吗:

var citySet = new Array;
function appendCity(){                  
        if($.inArray($("#businessCityTarget option:selected").text(),citySet)===-1){                            
            $("#cityContainer").append($("#businessCityTarget option:selected").text() + "<br>"); 
            citySet.push($("#businessCityTarget option:selected").text());  
        }
    }

希望这能有所帮助。。