Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中生成数组数组?_Javascript_Arrays - Fatal编程技术网

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

如何在Javascript中生成数组数组?,javascript,arrays,Javascript,Arrays,因此: var person = {name: "", address: "", phonenumber: ""} 我想创建一个循环来接收用户输入(直到他们决定不再输入任何信息,不输入任何内容或单击“取消”)。我还想使用person对象作为原型 所以我猜一个对象只是为了存储任意数量的人的姓名/地址/电话号码。我的逻辑是为循环的每次迭代动态地向对象添加整个数组。我的代码如下所示: var person = {name: "", address: "", phonenumber: ""} var

因此:

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}]
我一直在尝试动态生成如下内容:

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]手机中未存储任何内容

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

  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.
上面的代码应该按照您的意愿执行。我很难理解为什么要对同一个用户重复提示??所以先试试这个,然后继续

不要用提示框来诱导用户,使用表单。也不要迭代类似的东西,for循环中的条件基本上会创建一个无限循环,这也是不好的

我的代码可以更好,比如if条件,以及如何在表单中使用它。尽管坦率地说,你似乎还远远没有做到这一点。因此,我已经开始了,尝试一下,看看你是否能以你想要的方式实现这一点,然后提出建议,帮助你做其他事情

  • 首先,每次您将人员分配给客户时。 客户[i]=个人; 所有其他对象都将被修改,因为断点为input==”,所以所有对象都将使用空值进行修改

  • 开始时,您将属性定义为“phonenumber”,最后将值放入“phone”

  • 正确的代码应该是:

    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.
    } 
    

    请告诉我,这个“错误”是什么?关于
    console.log(客户)
    ?另外,您可以只使用
    customer.push(person)
    ,这样感觉更“一致”,而不必担心索引。您的代码不会生成您想要的内容,但也不会生成错误,就像您声称的那样:。请解释代码的真正问题是什么。你真正的问题是什么?您似乎已经知道如何将元素添加到数组中。请查看这是否有帮助:首先,如果单击“取消”按钮,它将显示错误,因为var input=prompt(“以逗号分隔的输入”);将输入设置为null,然后使用input.split()将导致错误。如果您单击Ok按钮,我认为您应该通过警报(customer.length)检查客户的长度;或者使用F12并观察客户变量内部。我不会为任何人制作此网页。我只是在学习如何做JS,所以我一直在使用scratchpad。我猜你可以说它几乎就像一个数据库。输入客户信息,然后可以随意访问元素。因此,我对同一个用户重复提示,因为您正在输入每个客户的数据!(想象一家商店询问您的信息)使用提示符进行迭代仍然是个坏主意。正如其他人所说,如果我们单击“取消”,它是未定义的。如果我们写hello,那么我们没有多个数组。因此,您的代码将始终失败。您最好的选择是使用虚拟表单。每次单击
    submit
    add都会显示该信息。尽管使用了一些条件语句来检查输入,但我仍然没有条件来检查
    !=“
    ,因为如果它是
    ,它仍然有效。”
    所以如果OP要重复这个,亲爱的上帝,我希望他不会,我会使用正则表达式清除所有空白,然后检查它。以及在循环中检查数组长度是否是OP所需的数量。我编辑了代码,因为它没有打印值,因为之前所有值都由于最后一次输入而变为null。@EasyBB oh。我不太担心糟糕的输入。这是一个实践程序,所以我不需要太多的用户验证