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