如何在Javascript中生成数组数组?

时间:2014-10-09 03:25:20

标签: javascript arrays

所以给出:

var person = {name: "", address: "", phonenumber: ""}

我想创建一个接收用户输入的循环(直到他们决定不再输入任何信息并输入任何内容或点击取消)。我也想将person对象用作原型。

所以我猜一个对象只是存储任意数量的人的姓名/地址/电话号码。我的逻辑是为我的循环的每次迭代动态地将整个数组添加到对象。我的代码看起来像这样:

var person = {name: "", address: "", phonenumber: ""}
var customer = []; //used to store each person


var input = "x";

//loop prompting user to input name/address/phone number
for(var i = 0; input != ""; i++){
  var input = prompt("Input separated by commas"); 
  //example input: mike, main, 123456789

  var results = input.split(", "); //create an array from the input

  //move input into the person array. 
  //person to look like {name = "mike", address = "main", phone = "123456789"}
  person.name = results.shift();
  person.address = results.shift();
  person.phone = results;


  customer[i] = person;//store the person array into the customer array.
}  

我一直试图动态生成这样的内容:

customer = 
[{name, address, phone}, 
{name, address, phone}, 
{name, address, phone}]

然后能够访问并打印它。我一直试图用

访问它
console.log(customer[0].phone);

不幸的是我得到了一个错误。

抱歉我的错误,console.log没有打印任何内容,所以似乎客户[0] .phone中没有任何内容。

我无法访问我提示用户输入并保存在变量中的任何数据。当我使用提醒功能时,我得到的只是一个空白框。每当我尝试打印客户时,我都会收到消息[对象对象]或类似的东西

2 个答案:

答案 0 :(得分:0)

  var customer = [];//create array
  var person = {};// create object
  var input = prompt("...");//your prompt
  var results = input.split(", "); //create an array from the input
  person.name = results[0];//add result with 0 index
  person.address = results[1];//add result with 1 index
  person.phone = results[2];//add result with index 2
  customer[0] = person;//add the person object to the array.

上面的代码应该按照您的意愿执行。我很难看到你为什么要向同一个用户迭代提示?所以先尝试一下然后继续。

http://jsfiddle.net/zkc2swmp/1/

请勿使用提示框为用户提供帮助,请使用表单。也不要迭代这样的东西,你在for循环中的条件基本上会创建一个无限循环,这也是不好的

我的代码可以更好,例如条件,以及如何在表单中使用它。虽然坦率地说你似乎远非如此。所以我已经开始关注,尝试一下,看看你是否可以按照自己想要的方式实现这一点,然后提出建议,以帮助你做其他事情。

答案 1 :(得分:0)

  1. 首先,每次您将人分配给客户,即 客户[i] =人; 所有其他对象都会被修改,因为您的断点是输入==“”所以所有对象都使用空值进行修改。

  2. 一开始你将属性定义为“phonenumber”,最后将值放在“phone”中。

  3. 正确的代码应该是:

    var customer = []; //used to store each person
    var input = "x";
    
    //loop prompting user to input name/address/phone number
    for(var i = 0; input != ""; i++){
        var input = prompt("Input separated by commas"); 
        //example input: mike, main, 123456789
    
        var results = input.split(", "); //create an array from the input
        var person = {};
        person.name = results.shift();
        person.address = results.shift();
        person.phone = results;
        customer[i] = person;//store the person array into the customer array.
    }