JavaScript -如何拥有第三个子变量

JavaScript - how to have a third "sub variable"

本文关键字:三个 变量 拥有 何拥有 JavaScript      更新时间:2023-09-26

好了,我忘了链接到列表内部的单个变量的变量列表的名称了,但是看一下:

function Models(Make) {
    var cars = {
        "Acura": ['Integra', 'NSX', 'RSX', ],
        "BMW": ['M3', ],
        "Buick": ['Regal', ],
        "Cadillac": ['CTS', ],
        "Honda": ['Accord', 'Civic', 'CR-Z', 'Prelude', ],
        "Mazda": ['3', 'MX-5', 'MX-6', 'RX-7', 'RX-8', ],
        "Mini": ['Cooper', ],
        "Nissan": ['240SX', '350Z', 'Fairlady', 'GT-R', 's13', 's14', 's15', ],
        "Toyota": ['Celica', 'MR2', 'Supra', ],
    };
    var holder = cars[Make]
    var Model = holder[Math.floor(Math.random() * holder.length)];
    return Model;
}
function main() {
    var Makes = [
            'Acura',
            'BMW',
            'Buick',
            'Cadillac',
            'Honda',
            'Mazda',
            'Mini',
            'Nissan',
            'Toyota',
    ];
    var Make = Makes[Math.floor(Math.random() * Makes.length)];
    var Model = Models(Make);
    var Out = Make + " " + Model;
    return Out;
}
document.write(main());

我想在车辆型号之后添加第三类(如Mini Cooper"S"或Honda Civic"Del Sol"),我怎么做最好?

您的cars对象包含许多属性,这些属性都是Array,并且这些Array被索引,包含String

如果您想存储的不仅仅是字符串(模型),那么您必须将其更改为数组或对象:

var cars = {
    "Acura": [
        {
            base: 'Integra'
            submodals: ['S', 'Coupe', 'Si']
        },
        {
            base: 'NSX',
            submodels: ['A', 'B', 'C']
        },
        // ...
    ]
}

我会写一个函数,它可以接受任意深度嵌套的对象作为参数。然后像这样组织:

var cars = {
    "Acura": {
        "Integra": ['S', 'Coupe', 'Si'],
        "NSX": "",
        "RSX": ""
    },
    "BMW": ['M3'],
    "Buick": ['Regal'],
    "Cadillac": ['CTS'],
    "Honda": {
        "Accord": "",
        "Civic": ["Del Sol"],
        "CR-Z": "",
        "Prelude": ""
    },
    "Mazda": ['3', 'MX-5', 'MX-6', 'RX-7', 'RX-8'],
    "Mini": {
        "Cooper": ["S"]
    },
    "Nissan": ['240SX', '350Z', 'Fairlady', 'GT-R', 's13', 's14', 's15'],
    "Toyota": ['Celica', 'MR2', 'Supra']
};
// (and notice: no trailing commas!)

然后你可以递归地选择一个随机模型:

function main() {
    return getRandom(cars).join(" ");
}
function getRandom(o) {
    if (o instanceof Array)
        return o.slice(~~(Math.random()*o.length), 1); // a random item in an array
    // else
    var props = Object.keys(o),
        r = props[ ~~(Math.random()*props.length) ],
        p = o[r];
    if (typeof p == "object") {
        var res = getRandom(p); // recurse
        res.unshift(r);
        return res;
    } // else
    return [ r ]; // an array literal with the random key
}