Javascript 从数组中获取一个随机条目,打印它并使用splice删除,以避免重复

Javascript 从数组中获取一个随机条目,打印它并使用splice删除,以避免重复,javascript,random,splice,Javascript,Random,Splice,我有以下功能为测验生成国家名称。我想从数组中生成一个随机名称,并在屏幕上显示它,然后删除它,这样我就不会有重复的问题。有人建议使用代码中显示的拼接方式,这是我以前从未使用过的,所以我不明白为什么它不能正常工作。你能帮我找出哪里不对劲吗?塔克斯! 代码如下: <div> <div style="float:left"> <h1> <span id="questionnum"></span>. Can you locate <spa

我有以下功能为测验生成国家名称。我想从数组中生成一个随机名称,并在屏幕上显示它,然后删除它,这样我就不会有重复的问题。有人建议使用代码中显示的拼接方式,这是我以前从未使用过的,所以我不明白为什么它不能正常工作。你能帮我找出哪里不对劲吗?塔克斯! 代码如下:

<div>
 <div style="float:left">
<h1> <span id="questionnum"></span>. Can you locate <span id="countryquestion"></span> on the map?</h1>
</div>


<script type="text/javascript">
generateCountry();


function generateCountry(){

filenames = [ "Albania", "Andorra", "Armenia", "Austria", "Azerbaijan", "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Georgia", "Germany", "Greece", "Hungary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "FYROM", "Malta", "Moldova", "Monaco", "Montenegro", "The Netherlands", "Norway", "Poland", "Portugal", "Romania", "Russia", "San Marino", "Serbia", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland", "Ukraine", "United Kingdom" ];

filename = filenames.splice(Math.floor(Math.random()*filenames.length), 1);

document.getElementById('countryquestion').textContent = filename[0];

}

</script>
我使用这个函数和另一个函数来检查用户是否在地图上单击了正确的国家。通过添加代码,第一个countryname出现,当我点击地图时,什么也没有发生。我没有收到任何响应,countryname保持不变,因为函数可能不会再次调用。这是从谷歌地图中获取国家名称的函数。唯一应该做的事情是将文件名(您的randElement)与google地图中的国家进行比较,然后调用generateCountry()判断答案是否正确,但现在没有发生。为什么

 function getCountry(latLng) {
              geocoder.geocode( {'latLng': latLng},
                function(results, status) {
                  if(status == google.maps.GeocoderStatus.OK) {
                    if(results[0]) {
                      for(var i = 0; i < results[0].address_components.length; i++) {
                        if(results[0].address_components[i].types[0] == "country") {
                          if(results[0].address_components[i].long_name == **filename**) {

                                right();
                                generateCountry();
                                numQuestions();
                                updateScore();
                                countRights();
                                showProgress();

                           } else {


                            wrong();
                             updateLives();
                              generateCountry();
                                numQuestions();
                                 showProgress();


                           }
                        }
                      }
                    }


                    else {
                      alert("No results");
                    }
                  }
                  else {

                 water(); 
                  }
                }
              );
      }  
函数getCountry(latLng){
geocoder.geocode({'latLng':latLng},
功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[0]){
对于(var i=0;i
请参见:

var filename=[“阿尔巴尼亚”、“安道尔”、“亚美尼亚”、“奥地利”];
//获取一个随机索引
var index=Math.floor(Math.random()*filenames.length);
//这是你的名字
var randElement=文件名[索引];
//移除它
文件名.拼接(索引,1);
文件。填写(“国家:“+randElement+”
); 文件。写入(“剩余:“+文件名+”
);
请参见:

var filename=[“阿尔巴尼亚”、“安道尔”、“亚美尼亚”、“奥地利”];
//获取一个随机索引
var index=Math.floor(Math.random()*filenames.length);
//这是你的名字
var randElement=文件名[索引];
//移除它
文件名.拼接(索引,1);
文件。填写(“国家:“+randElement+”
); 文件。写入(“剩余:“+文件名+”
);
pop
不接受
索引
参数,它总是删除最后一个元素。你可以在小提琴上清楚地看到这一点。您需要使用
splice
删除特定位置的元素。
pop
不接受
索引
参数,它总是删除最后一个元素。你可以在小提琴上清楚地看到这一点。您需要使用
splice
删除特定位置的图元。
 function getCountry(latLng) {
              geocoder.geocode( {'latLng': latLng},
                function(results, status) {
                  if(status == google.maps.GeocoderStatus.OK) {
                    if(results[0]) {
                      for(var i = 0; i < results[0].address_components.length; i++) {
                        if(results[0].address_components[i].types[0] == "country") {
                          if(results[0].address_components[i].long_name == **filename**) {

                                right();
                                generateCountry();
                                numQuestions();
                                updateScore();
                                countRights();
                                showProgress();

                           } else {


                            wrong();
                             updateLives();
                              generateCountry();
                                numQuestions();
                                 showProgress();


                           }
                        }
                      }
                    }


                    else {
                      alert("No results");
                    }
                  }
                  else {

                 water(); 
                  }
                }
              );
      }  
var filenames = [ "Albania", "Andorra", "Armenia", "Austria"];

// Get a random index
var index = Math.floor(Math.random() * filenames.length);

// This holds your random name
var randElement = filenames[index];

// Remove it
filenames.splice(index, 1);

document.write("Country: " + randElement + "<br />");
document.write("Remaining: " + filenames + "<br />");