如何在Javascript中动态插入和访问对象内的对象?

时间:2014-10-12 03:17:08

标签: javascript arrays

让我们说你有一个对象

var employee = [];

如何提示(使用提示功能)用户输入信息,使其如下所示:

var employee = [
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName": "Jones"}
];

当然有一个未指定数量的数组。因此,如果您的用户只输入一个员工的信息然后输入任何内容或点击取消,那么阵列将只有一个数组(对于John Doe)。

但主要的是用户输入信息直到他们决定完成信息。所以数组的数量不确定。

我需要通过循环提示执行此操作,即使我理解提示很糟糕。很多。

所以,这就是我要做的事情:

  1. 为员工提示用户。示例输入:John Doe
  2. 取字符串,使用分割功能。之后你会得到一个名为John Doe的数组
  3. 循环上述内容,直到用户输入""或点击取消。
  4. 将所有员工存储到可以打印到控制台的对象中。
  5. 这就是我的代码。

    var person = {firstname: "", lastname: ""}
    var employee = []; //used to store each person
    
    var input = "x"; 
    
    for(var i = 0; input != "" && input != null; i++){
        var input = prompt("Input first and last name"); 
    
        var results = input.split(); //create an array from the input
    
        person.firstname = results[0];
        person.lastname = results[1];
    
        employee[i] = person;//store the person array into the customer array.
    }  
    
    console.log(employee[1]["firstname"]); //test output
    console.log(employee[0]["lastname"]); //test output
    

    当我测试输出时,我得到了未定义。我正在尝试访问特定人员的名字,但无法访问。

3 个答案:

答案 0 :(得分:2)

你可以这样做

var flag = true, arr = [];
while (flag) {
    arr.push({
        firstname: prompt("What's your first name?") || "John",
        lastname: prompt("What's your last name?") || "Doe"
    });
    flag = confirm("Do you want to continue?");
}

否则,您也可以

var arr = (prompt("What's your name with first and last name") || "John Doe").split(" ");
arr.push({
    firstname: arr[0],
    lastname: arr[1]
});

答案 1 :(得分:1)

您正在调用split()但不提供任何参数。如果它是一个名字,我假设第一个和最后一个被空格分割。它应该是这样的:

var results = input.split(" ");

答案 2 :(得分:0)

他们的建议都是正确的。

您的代码无效的原因是因为您只有 person 对象的单个实例,并且您的所有employee数组值都引用此person对象。 一旦输入“”,您的person对象属性就会得到一个未定义的值,因此employee数组中的值也将是未定义的。

您可以将人物对象修改为多个实例以修复此错误。

function person() {
            return {firstname: "", lastname: ""};
        }
        ;
        var employee = []; //used to store each person

        var input = "x"; 

        for(var i = 0; input != "" && input != null; i++){
            var input = prompt("Input first and last name"); 

            var results = input.split(); //create an array from the input
            per = person();

            per.firstname = results[0];
            per.lastname = results[1];

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

        console.log('hi');
        console.log(employee[1].firstname);

fiddle here