创建一个不是并行数组的对象

时间:2017-05-21 14:51:51

标签: javascript

我一直试图让“arrToys”和“arrNames”彼此相邻,所以他们在一个对象中,但我不知道如何做到这一点,我能够让它们彼此平行但是我被告知我不允许这样做,所以有人可以告诉我。谢谢

    function start() {
    document.getElementById("task").innerHTML="Task 8";
    var arrNames = [];
    var vName = "";
    var vToys = "";
    vName = prompt("Enter dog name (leave blank to stop)");
    vToys = parseInt(prompt("Enter dogs toys (leave blank to stop)"));
    while (vName.length > 0) {
        arrNames.push(vName);
        arrNames.push(vToys);
        vName = prompt("Enter dog name (leave blank to stop)");
        vToys = parseInt(prompt("Enter dogs toys (leave blank to stop)"));
    }
    var name = function name(dogs) {
        return dogs.map(function(dogName, index) {
            return "Dog "+(index+1)+": "+ dogName;
        });
    };
    var Tname = function Tname(toys) {
        return toys.map(function(toyNum) {
            return "No. of toys: " + toyNum;
        });
    };
    arrNames.forEach(function(entry) {
    var vOutput = "Dog names and No. of toys: <br/>" + name(arrNames).join("<br/>") + Tname(arrNames).join("<br/>");
    document.getElementById("output").innerHTML=vOutput;
    });
}

1 个答案:

答案 0 :(得分:2)

听起来你得到的反馈是,你应该使用一组对象而不是并行数组。 (这是很好的反馈。)

所以你有一个阵列:

var stuff = [];

然后你得到一个狗的名字和玩具清单:

name = prompt("Enter dog name (leave blank to stop)");
toys = parseInt(prompt("Enter dogs toys (leave blank to stop)"));

然后将对象推送到数组上,如果有的话:

stuff.push({
    name: name,
    toys: toys
});

看起来你应该在之后对它们进行一些处理。在Array#forEachArray#map内,您将处理具有nametoys属性的对象。 E.g:

stuff.forEach(function(entry) {
    console.log(entry.name + " has these toys: " + entry.toys);
});

我在这里故意为您编写完整的代码,只是指出要做什么的必要部分。