0

我正在使用 jQuery Vector Map 用户选择的区域名称,我必须在 div 标签中添加。我做了那部分。

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

例如,当我单击亚利桑那地区时 - 在控制台中显示 3 次“false”和 1 次“true”。在 div 中添加 3 次的 arizona region 值。

如果我再次单击同一区域,它将再次添加 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');
    }
}
4

5 回答 5

0

我会写它完全不同,但保持你的方式:

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');
}

数组

于 2013-03-07T11:57:08.780 回答
0

你也可以通过使用 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');
}
于 2013-03-07T12:00:08.573 回答
0

你真的不需要 for 循环只要 region 只有一个字符串,即 'Arizona' 或 'failString'

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');
}
于 2013-03-07T12:18:42.577 回答
0

问题是 Arizona 将匹配一次,但其他 3 次失败,因此 else 被执行 3 次,如果只执行一次。尝试这个:

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');
                    }
于 2013-03-07T11:59:04.043 回答
0

是否将区域添加到列表的逻辑应该在循环之外。在循环中,您只是找出该区域是否不存在。这是一个示例,但我也会inArray按照@gdoron 的回答使用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');
}
于 2013-03-07T11:59:20.240 回答