JavaScript-如何拥有第三个“子变量”
好的,我忘记了链接到列表中已存在的单个变量的变量列表的名称,但请看一下:JavaScript-如何拥有第三个“子变量”,javascript,html,variables,random-sample,Javascript,Html,Variables,Random Sample,好的,我忘记了链接到列表中已存在的单个变量的变量列表的名称,但请看一下: function Models(Make) { var cars = { "Acura": ['Integra', 'NSX', 'RSX', ], "BMW": ['M3', ], "Buick": ['Regal', ], "Cadillac": ['CTS', ], "Honda": ['Accord', 'Civic', 'CR
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对象包含许多属性,这些属性都是数组,这些数组都是索引的,包含字符串
如果要在模型中存储多个字符串,则必须将其更改为数组或对象:
var cars = {
"Acura": [
{
base: 'Integra'
submodals: ['S', 'Coupe', 'Si']
},
{
base: 'NSX',
submodels: ['A', 'B', 'C']
},
// ...
]
}
cars对象包含许多属性,这些属性都是数组,这些数组被索引,包含字符串
如果要在模型中存储多个字符串,则必须将其更改为数组或对象:
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
}
我将编写一个函数,可以将任意深度嵌套的对象作为参数。然后像这样构造它:
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
}
你在搜索术语属性吗?你在搜索术语属性吗?在我看来,这有点过于复杂了。为什么不再次使用对象呢?但是如何利用子模型呢?我怎么称呼他们?@Bergi-绝对可能。这完全取决于Garret希望数据的表示方式。在我看来,这有点过于复杂了。为什么不再次使用对象呢?但是如何利用子模型呢?我怎么称呼他们?@Bergi-绝对可能。这完全取决于Garret希望如何表示数据。