0

divタグに追加する必要があるjQueryVectorMapユーザーが選択したリージョン名で作業しています。私はその部分をしました。

ただし、ユーザーは同じリージョンを複数回追加しないでください(すでにリージョンを追加している場合)。そのため、すべてのリージョン名を配列に格納しました。

たとえば、アリゾナ地域をクリックすると、コンソールで3回の「false」と1回の「true」が表示されます。アリゾナ地域の値は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');
    }
}
4

5 に答える 5

0

リージョンが1つの文字列、つまり「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');
}
于 2013-03-07T12:18:42.577 に答える
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');
}

inArray

于 2013-03-07T11:57:08.780 に答える
0

問題は、Arizona が 1 回一致するが、他の 3 回は失敗するため、else が 3 回実行され、1 回しか実行されないことです。これを試して:

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 に答える
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 に答える