我希望用户插入一些关于他自己的数据,将用户的输入推送到我的数组以供进一步使用。我可以将数据推送到数组并使其成为多维的吗?如何将空数组转换为多维数组?这是我的http://jsfiddle.net/arminemash/r1pfwwe4/114/。 提前致谢
<script>
var dataBaze=[];
function myFunction(){
alert('hello');
$("button").click( inputData());
};
function inputData(){
do{
var input=prompt("Enter user's name,surname,telephone number,Email keeping the order and separating words by a comma"," ");
dataBaze.push(input);
var ok=confirm("continue?");
}
while(ok==true);
}
</script>
答案 0 :(得分:2)
首先,由于您从以逗号分隔的提示中获取数据,因此需要拆分字符串以使其成为数组。为此:
var infos = prompt("Enter user's name,surname,telephone number,Email keeping the order and separating words by a comma"," ")
var infosArray = infos.split(',');
dataBaze.push(infosArray);
split方法允许您使用字符串将其划分为块,并使用传递给函数的分隔符。所以&#34; .split(&#39;,&#39;)&#34;查找逗号的每个实例并获取前面的内容并将其推送到数组中。解析完整个字符串后,它将返回完整的数组。
从那里,数组的每个单元格将包含其自己的子单元格中的每个信息(dataBaze [0]可能包含类似
的内容) ['MyName', 'MySurname', '555-555-5555', 'myemail@email]
所以,让我们说你想要你可以使用的名字&#34; dataBaze [0] [0]&#34;等等。
但是,有几种方法可以让事情更易于阅读和维护,例如将对象插入数组中,如下所示:
var user = {name:'', surname:'', telephone:'', email:''};
user.name = infosArray[0];
user.surname = infosArray[1];
user.telephone = infosArray[2];
user.email = infosArray[3];
dataBaze.push(user);
然后您可以像这样访问信息:
document.write("My name is " + dataBaze[0].name + ", and my surname is " + dataBaze[0].surname + ". You can call me at " + dataBaze[0].telephone + " or contact me by email at " + dataBaze[0].email +". Thanks!");
我们在这里所做的是创建一个对象({}),它基本上是一个键控数组(它更多但是没有理由让它变得太深)。 因此,当您稍后再回到代码时,您不必每次都猜测哪个单元格是什么。
编辑:只是想我会为什么和为什么添加一些解释。
答案 1 :(得分:2)
正如Xufox所说,使用函数名称来调用它:
$("button").click(inputData);
在将数据推送到数组中时,按下这样推送:
var input = prompt("Enter user's name,surname,telephone number,Email keeping the order and separating words by a comma", " ").split(",");
dataBaze.push({
"name":input[0],
"surname":input[1],
"telephone":input[2],
"email":input[3]
});
因此,您可以根据需要获得多维数组。这是jsFiddle
正如ste2425所说,你可以改用表格,
var dataBaze = [];
$("#submit").click(function(){
dataBaze.push({
"name": $("#name").val(),
"surname":$("#surname").val(),
"telephone":$("#phone").val(),
"email":$("#email").val(),
});
console.log(dataBaze)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
Enter name: <input type="text" id="name"><br/>
Enter Surname: <input type="text" id="surname"><br/>
Enter Telephone: <input type="text" id="phone"><br/>
Enter Email: <input type="text" id="email"><br/>
<button id="submit">submit</button><br/>
</form>
希望它有效:)
答案 2 :(得分:0)
我想你想创造这样的东西:
function inputData(){
var counter = 0;
do{
var input=prompt("Enter user's name,surname,telephone number,Email keeping the order and separating words by a comma"," ");
elements = input.split(",");
dataBaze[counter] = new Array(5);
for (var j = 0; j < 5; j++) {
dataBaze[counter][j]= elements[j];
}
counter++;
var ok=confirm("continue?");
}
while(ok==true);
//alert is for checking;
alert(dataBaze);
}
您可以通过以下方式简化它:
var elements = infos.split(',');
dataBaze.push(infosArray);