数组值会覆盖而不是保留旧值 - Javascript

时间:2017-12-04 12:27:26

标签: javascript arrays multidimensional-array

这就是我想要的。

用户输入数字输入。如果他输入2,则代码会提示输入两个玩家名称。

播放器名称存储在一个数组中。页面中有一个“下一个”按钮,当用户单击它时,代码会提示输入另外两个名称。

接下来是棘手的部分:现在,在两个单独的会话中输入了四个名字。现在我需要一个嵌套数组,应该根据会话将用户名保存在不同的数组中。

我尝试了很多代码,但至少只有以下内容更接近。 但是,每当用户输入新的用户名列表时,就会创建一个新数组,但之前的数组也会被覆盖。

$.each(data.result.district, function(index, district) {
     $.each($(district), function(index, hotel) {
         console.log($(hotel).displayname);
     });
});
var TotalNumOfPlayers = prompt("Enter The Total Number Of Players! (For example 2)");
var nameOfPlayers = [];
var loopThroughAllNames = new Array(new Array());
var NextList = document.querySelector("#NextList");
var tempArr = [];

addValue();

function addValue() {
  for (var i = 0; i < TotalNumOfPlayers; i++) {
    tempArr[i] = prompt("Enter Player name "+(i+1));
  }

  loopThroughAllNames.push(tempArr);
}

NextList.addEventListener("click", function() {
  addValue();

});

3 个答案:

答案 0 :(得分:3)

对于相同的tempArr,你的for循环总是从0开始(在addValue方法之外初始化一次),因此它会覆盖先前的条目。

for (var i = 0; i < TotalNumOfPlayers; i++) {
    tempArr[i] = prompt("Enter Player name "+(i+1));
  }

您需要在tempArr方法中初始化addValue数组。

<强>演示

var loopThroughAllNames = [];
var TotalNumOfPlayers = prompt("Enter The Total Number Of Players!");
addValue();

function addValue () 
{
  var tempArr = [];
  for (var i = 0; i < TotalNumOfPlayers; i++) {
    tempArr[i] = prompt("Enter Player name");
  }
  loopThroughAllNames.push(tempArr);  
  console.log( loopThroughAllNames );
}

var NextList = document.querySelector("#NextList");
NextList.addEventListener("click", function() {
  addValue( );
});
<button id="NextList">Next list</button>

答案 1 :(得分:3)

检查以下链接

JsFiddle

var TotalNumOfPlayers = prompt("Enter The Total Number Of Players! (For example 2)");
var loopThroughAllNames = [];
var NextList = document.querySelector("#NextList");

addValue();

function addValue() {
  var tempArr = [];
  for (var i = 0; i < TotalNumOfPlayers; i++) {
    tempArr[i] = prompt("Enter Player name " + (i + 1));
  }

  loopThroughAllNames.push(tempArr);
}

NextList.addEventListener("click", function() {
  addValue();
  document.write(JSON.stringify(loopThroughAllNames));
});
<button id="NextList">Next list</button>

答案 2 :(得分:1)

我正在创建一个数组数组来插入名称。 tempArraddValue被声明为空,后来被推入全局数组allnames

var TotalNumOfPlayers = prompt("Enter The Total Number Of Players! (For example 2)");
var nameOfPlayers = [];
var loopThroughAllNames = new Array(new Array());
var NextList = document.querySelector("#NextList");
var allnames = [];

addValue();

function addValue() {
  var tempArr = [];
  for (var i = 0; i < TotalNumOfPlayers; i++) {
    tempArr[i] = prompt("Enter Player name "+(i+1));
  }

  loopThroughAllNames.push(tempArr);
  allnames.push(tempArr);
}

NextList.addEventListener("click", function() {
  addValue();
  console.log(allnames)
});
<button id="NextList">Next list</button>