Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果某个值为',则采取措施;数组中的t_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如果某个值为',则采取措施;数组中的t

Javascript 如果某个值为',则采取措施;数组中的t,javascript,jquery,html,Javascript,Jquery,Html,我正在使用jqueryvectormap用户选择的区域名称,我必须添加到div标记中。 我完成了那部分 但用户不应多次添加同一区域(如果已添加区域)。 所以我将所有区域的名称存储在数组中 例如,当我点击亚利桑那州地区-在控制台中,它显示3次“假”和1次“真”。亚利桑那州地区的价值在div中增加了3倍 如果我再次单击同一区域,它会再次添加3次 var regionList = new Array('Alaska','Alabama','Arkansas','Arizona') /* sample

我正在使用jqueryvectormap用户选择的区域名称,我必须添加到div标记中。 我完成了那部分

但用户不应多次添加同一区域(如果已添加区域)。 所以我将所有区域的名称存储在数组中

例如,当我点击亚利桑那州地区-在控制台中,它显示3次“假”和1次“真”。亚利桑那州地区的价值在div中增加了3倍

如果我再次单击同一区域,它会再次添加3次

var regionList = new Array('Alaska','Alabama','Arkansas','Arizona') /* sample array*/

for(i=0;i<regionList.length;i++)
{
    if(region == regionList[i])
    {
      console.log(true);
      alert("Region already assigned");
    }
    else
    {   
      console.log(false);
      $('<li>' + region + '</li>').appendTo('ul#location-selected');
    }
}
var regionList=new数组('Alaska'、'Alabama'、'Arkansas'、'Arizona')/*示例数组*/

对于(i=0;i我会写得完全不同,但保持你的方式:

var regionList = new Array('Alaska','Alabama','Arkansas','Arizona') /* sample array*/
//  region isn't in region list.
if($.inArray(region,regionList) == -1)
{
    console.log(true);
    alert("Region already assigned");
}
//  region is in region list.
else
{   console.log(false);
    $('<li>' + region + '</li>').appendTo('ul#location-selected');
}
var regionList=new数组('Alaska'、'Alabama'、'Arkansas'、'Arizona')/*示例数组*/
//区域不在区域列表中。
if($.inArray(region,regionList)=-1)
{
console.log(true);
警报(“已分配区域”);
}
//区域位于区域列表中。
其他的
{console.log(false);
$(“
  • ”+区域+”
  • )。附加到('ul#location selected'); }

    问题是Arizona将匹配一次,但其他三次将失败,因此else将执行三次,如果仅执行一次。请尝试以下操作:

    var flag=0;
    var regionList = new Array('Alaska','Alabama','Arkansas','Arizona') /* sample array*/
                    for(i=0;i<regionList.length;i++)
                    {
                        if(region == regionList[i])
                        {
                            console.log(true);
                            alert("Region already assigned");
                            flag=1;
                        }
                    }
    if(flag==0)
    {   console.log(false);
                            $('<li>' + region + '</li>').appendTo('ul#location-selected');
                        }
    
    var标志=0;
    var regionList=新数组(“阿拉斯加”、“阿拉巴马州”、“阿肯色州”、“亚利桑那州”)/*样本数组*/
    
    对于(i=0;i而言,是否将区域添加到列表的逻辑应该在循环之外。而在循环中,您只需找出该区域是否已经存在。 这里有一个例子,但我也会根据@gdoron的答案使用
    inArray
    jQuery函数

    var regionList = new Array('Alaska','Alabama','Arkansas','Arizona')
    var isNewRegion = true;
    for(i=0;i<regionList.length;i++)
    {
        if(region == regionList[i])
        {
            isNewRegion = false;
            console.log(true);
            alert("Region already assigned");
         }
    }
    
    if (isNewRegion )
    {   
        console.log(false);
        $('<li>' + region + '</li>').appendTo('ul#location-selected');
    }
    
    var regionList=新数组('阿拉斯加'、'阿拉巴马'、'阿肯色州'、'亚利桑那州')
    var isNewRegion=true;
    
    对于(i=0;i您也可以通过使用js对象实现您想要的:

    var regionList = {'Alaska': true,'Alabama': true,'Arkansas': true,'Arizona': true};
    if(regionList[region])
    {
        alert("Region already assigned");
    }
    else
    {   
        regionList[region] = true;
        $('<li>' + region + '</li>').appendTo('ul#location-selected');
    }
    
    var regionList={'Alaska':true,'Alabama':true,'Arkansas':true,'Arizona':true};
    if(地区列表[地区])
    {
    警报(“已分配区域”);
    }
    其他的
    {   
    regionList[区域]=真;
    $(“
  • ”+区域+”
  • )。附加到('ul#location selected'); }
    只要区域只有一个字符串,即“Arizona”或“failString”,就不需要for循环

    var regionList = ['Alaska', 'Alabama', 'Arkansas', 'Arizona']
    if (regionList.indexOf(region) != -1) {
        // If region exists in the array
        console.log('true');
    } else {
        // If region doesn't exist in the array
        console.log('false');
    }
    

    是的,对象是可能的,但这没有意义,为什么你要给每个值添加一个冗余的
    true
    ?不会否决,但在我看来这是一个非常糟糕的设计。我相信如果你必须在这里存储几个区域,这不会有任何区别。不管怎样,这是纯JS检查,你不必担心IE.as中的indexOf之类的兼容性问题我写道,它不会使任何东西崩溃,也不会使浏览器变慢,这只是一个糟糕的设计(使数组成为一个对象,这样您就可以使用
    []
    操作符,还有其他更好的方法来确定数组中是否存在值)感谢所有上述回复,但它没有达到我的期望。我想添加所选区域,如果它还没有。同时,我应该再次添加相同的区域。让我帮助我…谢谢