Javascript 如果某个值为',则采取措施;数组中的t
我正在使用jqueryvectormap用户选择的区域名称,我必须添加到div标记中。 我完成了那部分 但用户不应多次添加同一区域(如果已添加区域)。 所以我将所有区域的名称存储在数组中 例如,当我点击亚利桑那州地区-在控制台中,它显示3次“假”和1次“真”。亚利桑那州地区的价值在div中增加了3倍 如果我再次单击同一区域,它会再次添加3次Javascript 如果某个值为',则采取措施;数组中的t,javascript,jquery,html,Javascript,Jquery,Html,我正在使用jqueryvectormap用户选择的区域名称,我必须添加到div标记中。 我完成了那部分 但用户不应多次添加同一区域(如果已添加区域)。 所以我将所有区域的名称存储在数组中 例如,当我点击亚利桑那州地区-在控制台中,它显示3次“假”和1次“真”。亚利桑那州地区的价值在div中增加了3倍 如果我再次单击同一区域,它会再次添加3次 var regionList = new Array('Alaska','Alabama','Arkansas','Arizona') /* sample
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之类的兼容性问题我写道,它不会使任何东西崩溃,也不会使浏览器变慢,这只是一个糟糕的设计(使数组成为一个对象,这样您就可以使用[]
操作符,还有其他更好的方法来确定数组中是否存在值)感谢所有上述回复,但它没有达到我的期望。我想添加所选区域,如果它还没有。同时,我应该再次添加相同的区域。让我帮助我…谢谢