如何将数据添加到空数组中,使其在JavaScript中具有多维性?

时间:2016-07-03 13:18:52

标签: javascript arrays multidimensional-array

我希望用户插入一些关于他自己的数据,将用户的输入推送到我的数组以供进一步使用。我可以将数据推送到数组并使其成为多维的吗?如何将空数组转换为多维数组?这是我的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>

3 个答案:

答案 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);