使用变量命名变量

时间:2016-10-28 22:31:31

标签: javascript jquery

我试图摆脱这个,变量Car1 Car2,Car3,Car4被推到一个数组。但我似乎无法弄清楚如何在for循环中增加变量。有什么想法吗?



function get_info() {
    n = 0;
    for (var option_post in postvalues) {
    n++;
        var pair = postvalues[option_post];
        var string_pair = pair.concat(": ")
        var new_postvalues = (string_pair.concat(document.getElementsByName(pair)[0].value));
        //Set up cars
        var make.concat(n) = document.getElementById("make").value;
        var year.concat(n) = document.getElementById("year").value;
        var model.concat(n) = document.getElementById("model").value;
        var car.concat(n) = "Make: ".concat(make.concat(n)).concat("-Model: ").concat(model.concat(n)).concat("-Year:").concat(year.concat(n)); // combine
    }
    cars.push(car1, car2, car3, car4);
}




2 个答案:

答案 0 :(得分:2)

没有理由在每次循环迭代中创建新的标识符,尤其是因为您希望将值收集到数组中。

function get_info() {
    var cars = [], car;
    for (var i = 0; i < postvalues.length; i++) {
        // ...

        // create a car
        car = "Make: " + document.getElementById('make' + i).value
            + "-Model: " + document.getElementById('model' + i).value
            + "-Year: " + document.getElementById('year' + i).value;

        // append it to the end of your array
        cars.push(car);
    }

    return cars;
}

答案 1 :(得分:0)

我会为每辆车创建一个对象,然后将它们存储在由汽车名称键入的另一个对象中。这些方面的东西:

var cars = {};

for(var i = 0; i < carData.length; i++) {
    var carRef = "car" + n;
    cars[carRef] = {};
    cars[carRef].make = carData[i].make;
    cars[carRef].year = carData[i].year;
    cars[carRef].model = carData[i].model;
}

它与您的代码不完全匹配,但希望您可以从此示例中获得想法。有了这个,您将检索这样的单个车:

cars["car1"]

或者某辆车的个人财产:

cars["car1"].make