Javascript将用户输入存储到二维数组中

Javascript将用户输入存储到二维数组中,javascript,multidimensional-array,input,Javascript,Multidimensional Array,Input,我试图用用户输入的数据值存储一个二维数据。比如,将学生的测试结果存储到该数组中。我已经设法用一维数组实现了这一点,但未能将二维数组与用户输入关联起来。我检查了许多2D数组示例,发现如果使用Java而不是Javascript,这将更容易,但目前,这是我唯一了解的语言,我确实想知道如何使用Javascript实现。我还尝试使用位置变量I连接输入和数组,但无法解决此问题。我发现了两种解决方案。第一个问题是我会怎么做,我比较固执己见,使用对象。第二个是2D阵列。希望有帮助 个人的方法和建议 我认为最好使

我试图用用户输入的数据值存储一个二维数据。比如,将学生的测试结果存储到该数组中。我已经设法用一维数组实现了这一点,但未能将二维数组与用户输入关联起来。我检查了许多2D数组示例,发现如果使用Java而不是Javascript,这将更容易,但目前,这是我唯一了解的语言,我确实想知道如何使用Javascript实现。我还尝试使用位置变量I连接输入和数组,但无法解决此问题。

我发现了两种解决方案。第一个问题是我会怎么做,我比较固执己见,使用对象。第二个是2D阵列。希望有帮助

个人的方法和建议 我认为最好使用对象而不是n维数组。我看到了一个解决方案,提供了您显示的数据:

// Define a student object
function Student(_name, _mark1, _mark2, _mark3) {
  this.name = _name;
  this.mark1 = _mark1;
  this.mark2 = _mark2;
  this.mark3 = _mark3;
}

// Define the array that will hold the students and their marks
var TestResults = [];

// Process HTML
var Name = document.getElementById("Name").value;
var Mark1 = document.getElementById("Mark1").value;
var Mark2 = document.getElementById("Mark2").value;
var Mark3 = document.getElementById("Mark3").value;

// Add new student record
TestResults.push(new Student(Name, Mark1, Mark2, Mark3));

// At any time now you can access the data like so:
// TestResults[index].name gives the name of the student
// TestResults[index].mark1 gives the first mark
// ...
// TestResults[0].Name => Will give you the name of the first student in the array
对你问题的直接回答
只需将数组文字设置为如下所示,即可创建二维数组:

var TestResults = [Name, [Mark1, Mark2, Mark3]];
这里TestResults[0]是名称,TestResults[1]是分数数组。第一个分数是测试结果[1][0]

然而,这可能不是最好的办法。在这里,对象可能更有意义。例如,当您稍后查看代码时,类似的内容将更容易理解:

var TestResults = {name: Name, scores: [Mark1, Mark2, Mark3]};
现在TestResults.name是名称,TestResults.scores是分数数组。TestResults.scores[0]是第一个分数

这样,您就可以创建一个简单的界面来接受分数,并继续将分数添加到页面中,如下所示:

功能显示{ var Name=document.getElementByIdName.value; var Mark1=document.getElementByIdMark1.value; var Mark2=document.getElementByIdMark2.value; var Mark3=document.getElementByIdMark3.value; var testResults={name:name,scores:[Mark1,Mark2,Mark3]}; appendResultstestResults } 函数appendResultsobj{ var holder=document.getElementByIddemo var scoreDiv=document.createElement'div' scoreDiv.innerHTML=obj.name+':'+obj.scores.join',' holder.appendChildscoreDiv } 姓名: 标记10-20: 标记2 0-25: 标记20-35: 上载 分数:

太棒了!我真的很感谢你在回答这个问题上付出的努力和时间。但是我突然意识到我可能不应该问这个关于堆栈溢出的问题。尽管我正在寻求帮助,但我担心使用您的代码会被视为剽窃。非常感谢,但我可能无法使用您的代码。我为我的鲁莽道歉。我很高兴你问了这个问题,我可以帮忙!用我给你举的例子绝不是剽窃。StackOverflow是关于学习和解决问题;这正是你所做的。你在学习,这太棒了,你遇到了一个问题——两个不同的人以完全相同的方式解决了这个问题。我们只是碰巧想到了一个更好的方法来解决您的问题,并与您分享。你可以随心所欲地使用它,并学习它来解决未来的问题!祝你编程好运!我有个问题。我刚刚检查了javascript推送方法。它的基本用途是将其他元素添加到已经存在的数组中。然后,我发现自己无法使用此方法构建二维数组,因为它只替换了以前的数组集,而没有向数组中添加新行。您到底是如何使用它的?我使用了您对我的问题的直接答案,即push方法行,之后是document.getElementByIddemo.innerHTML=TestResults;。然后我输入数据并单击按钮,就会显示一个数组。但是,当我再次单击按钮时,我只得到相同的1D数组,没有数组累积。

var TestResults = {name: Name, scores: [Mark1, Mark2, Mark3]};