Javascript 而循环在较高输出期间挂起
这是我的第一篇帖子 我经营一个爵士乐乐队,有一本超过500首曲子的音乐书。每一场演出我都会制作一个由大约30首不同风格的曲子组成的曲目集。我正在尝试制作一个程序,为我创建一个随机的集合列表,这样我就不必花一个小时自己去做了 代码说明:Javascript 而循环在较高输出期间挂起,javascript,for-loop,if-statement,while-loop,javascript-objects,Javascript,For Loop,If Statement,While Loop,Javascript Objects,这是我的第一篇帖子 我经营一个爵士乐乐队,有一本超过500首曲子的音乐书。每一场演出我都会制作一个由大约30首不同风格的曲子组成的曲目集。我正在尝试制作一个程序,为我创建一个随机的集合列表,这样我就不必花一个小时自己去做了 代码说明: 每个曲调都是一个对象,有编号、标题和流派。这些对象位于一个名为“master”的数组中 我把每首曲子过滤成三种不同的体裁:摇摆、拉丁和波萨 函数containsObject():如果列表中存在对象,则输出false;如果对象不存在,则输出true。这用于检查正在创
function make_setlist(){
while (setlist.length < 30) { //if length is too high, it hangs
swing_func();
latin_func();
bossa_func();
}
}
函数make_setlist(){
而(setlist.length<30){//如果长度太高,它将挂起
swing_func();
拉丁函数();
bossa_func();
}
}
完整代码:
var master = [
{Number: 0, Title: "Amor", Genre: "latin"},
{Number: 1, Title: "All", Genre: "bossa"},
{Number: 2, Title: "Alomony", Genre: "swing"},
{Number: 3, Title: "Arrow", Genre: "latin"},
{Number: 4, Title: "Ba", Genre: "latin"},
{Number: 5, Title: "Bale", Genre: "swing"},
{Number: 6, Title: "Bonno", Genre: "bossa"},
{Number: 7, Title: "Bell", Genre: "bossa"},
{Number: 8, Title: "Call", Genre: "bossa"},
{Number: 9, Title: "Cow", Genre: "swing"},
{Number: 10, Title: "Start With This", Genre: "swing"},
{Number: 11, Title: "Conn", Genre: "latin"},
{Number: 12, Title: "Ja", Genre: "latin"},
{Number: 13, Title: "jule", Genre: "bossa"},
{Number: 14, Title: "ren", Genre: "swing"},
{Number: 15, Title: "Argh", Genre: "latin"},
{Number: 16, Title: "wam", Genre: "latin"},
{Number: 17, Title: "wham", Genre: "swing"},
{Number: 18, Title: "good", Genre: "bossa"},
{Number: 19, Title: "create", Genre: "bossa"},
{Number: 20, Title: "Celllary", Genre: "bossa"},
{Number: 21, Title: "pig", Genre: "swing"},
{Number: 22, Title: "Second set start", Genre: "swing"},
{Number: 23, Title: "lawn", Genre: "latin"},
{Number: 24, Title: "a", Genre: "latin"},
{Number: 25, Title: "b", Genre: "bossa"},
{Number: 26, Title: "c", Genre: "swing"},
{Number: 27, Title: "d", Genre: "latin"},
{Number: 28, Title: "e", Genre: "latin"},
{Number: 29, Title: "f", Genre: "swing"},
{Number: 30, Title: "g", Genre: "bossa"},
{Number: 31, Title: "h", Genre: "bossa"},
{Number: 32, Title: "i", Genre: "bossa"},
{Number: 33, Title: "j", Genre: "swing"},
{Number: 34, Title: "k", Genre: "swing"},
{Number: 35, Title: "l", Genre: "latin"},
{Number: 36, Title: "m", Genre: "latin"},
{Number: 37, Title: "n", Genre: "bossa"},
{Number: 38, Title: "o", Genre: "swing"},
{Number: 39, Title: "p", Genre: "latin"},
{Number: 40, Title: "q", Genre: "latin"},
{Number: 41, Title: "r", Genre: "swing"},
{Number: 42, Title: "s", Genre: "bossa"},
{Number: 43, Title: "t", Genre: "bossa"},
{Number: 44, Title: "u", Genre: "bossa"},
{Number: 45, Title: "v", Genre: "swing"},
{Number: 46, Title: "w", Genre: "swing"},
{Number: 47, Title: "x", Genre: "bossa"},
{Number: 48, Title: "y", Genre: "swing"},
{Number: 49, Title: "z", Genre: "latin"},
{Number: 50, Title: "zacs tune", Genre: "latin"}
];
//...................Variables......................................
var setlist = [];
var swings = master.filter(tune => tune.Genre === "swing");
var latins = master.filter(tune => tune.Genre === "latin");
var bossas = master.filter(tune => tune.Genre === "bossa");
var r;
var temparr = [];
//..........................................................................
//This function works: outputs false if object exists in list and true if object does not exist
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
console.log(list[i]);
if (list[i] === obj) {
// console.log("object exists within list");
return false;
}
}
// console.log("object does not exist within list");
return true;
}
//...................SWING FUNC.....................................
function swing_func(){
r = Math.floor(Math.random() * swings.length);
while(temparr.length === 0){
if(containsObject(swings[r], temparr) === true){
temparr = swings.splice(r, 1);
} else {
r = Math.floor(Math.random() * swings.length);
}
}
setlist.push(temparr.splice(0, 1));
}
//...................LATIN FUNC.....................................
function latin_func(){
r = Math.floor(Math.random() * latins.length);
while(temparr.length === 0){
if(containsObject(latins[r], temparr) === true){
temparr = latins.splice(r, 1);
} else {
r = Math.floor(Math.random() * latins.length);
}
}
setlist.push(temparr.splice(0, 1));
}
//...................BOSSA FUNC.....................................
function bossa_func(){
r = Math.floor(Math.random() * bossas.length);
while(temparr.length === 0){
if(containsObject(bossas[r], temparr) === true){
temparr = bossas.splice(r, 1);
} else {
r = Math.floor(Math.random() * bossas.length);
}
}
setlist.push(temparr.splice(0, 1));
}
//...................make_setlist FUNC..............................
function make_setlist(){
while (setlist.length < 30) { //if length is too high, it hangs
swing_func();
latin_func();
bossa_func();
}
}
//...........................call functions.....................................
make_setlist();
console.log(setlist);
var主机=[
{编号:0,标题:“爱”,体裁:“拉丁语”},
{编号:1,标题:“全部”,体裁:“博萨”},
{编号:2,标题:“孤独”,体裁:“摇摆”},
{编号:3,标题:“箭头”,体裁:“拉丁语”},
{编号:4,标题:“Ba”,体裁:“拉丁语”},
{编号:5,标题:“贝尔”,类型:“摇摆”},
{编号:6,标题:“博诺”,体裁:“博萨”},
{编号:7,标题:“贝尔”,体裁:“博萨”},
{编号:8,标题:“呼叫”,体裁:“博萨”},
{编号:9,标题:“奶牛”,体裁:“秋千”},
{编号:10,标题:“从这个开始”,类型:“swing”},
{编号:11,标题:“Conn”,体裁:“拉丁语”},
{编号:12,标题:“Ja”,体裁:“拉丁语”},
{编号:13,标题:“朱尔”,体裁:“博萨”},
{编号:14,标题:“任”,体裁:“摇摆”},
{编号:15,标题:“Argh”,体裁:“拉丁语”},
{编号:16,标题:“wam”,体裁:“拉丁语”},
{编号:17,标题:“wham”,类型:“swing”},
{编号:18,标题:“好”,体裁:“博萨”},
{编号:19,标题:“创建”,类型:“博萨”},
{编号:20,标题:“Celllary”,体裁:“bossa”},
{编号:21,标题:“猪”,类型:“秋千”},
{编号:22,标题:“第二盘开始”,体裁:“摇摆”},
{编号:23,标题:“草坪”,体裁:“拉丁语”},
{编号:24,标题:“a”,体裁:“拉丁语”},
{编号:25,标题:“b”,体裁:“博萨”},
{编号:26,标题:“c”,类型:“swing”},
{编号:27,标题:“d”,体裁:“拉丁语”},
{编号:28,标题:“e”,体裁:“拉丁语”},
{编号:29,标题:“f”,体裁:“swing”},
{编号:30,标题:“g”,体裁:“博萨”},
{编号:31,标题:“h”,体裁:“博萨”},
{编号:32,标题:“我”,体裁:“博萨”},
{编号:33,标题:“j”,类型:“swing”},
{编号:34,标题:“k”,类型:“swing”},
{编号:35,标题:“l”,体裁:“拉丁语”},
{编号:36,标题:“m”,体裁:“拉丁语”},
{编号:37,标题:“n”,体裁:“博萨”},
{编号:38,标题:“o”,类型:“swing”},
{编号:39,标题:“p”,体裁:“拉丁语”},
{编号:40,标题:“q”,体裁:“拉丁语”},
{编号:41,标题:“r”,类型:“swing”},
{编号:42,标题:“s”,体裁:“bossa”},
{编号:43,标题:“t”,体裁:“博萨”},
{编号:44,标题:“u”,体裁:“bossa”},
{编号:45,标题:“v”,类型:“swing”},
{编号:46,标题:“w”,类型:“swing”},
{编号:47,标题:“x”,体裁:“博萨”},
{编号:48,标题:“y”,类型:“swing”},
{编号:49,标题:“z”,体裁:“拉丁语”},
{编号:50,标题:“zacs曲调”,体裁:“拉丁语”}
];
//变量。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
var setlist=[];
var swings=master.filter(tune=>tune.Genre==“swing”);
var latins=master.filter(tune=>tune.Genre==“拉丁”);
var bossas=master.filter(tune=>tune.Genre==“bossa”);
var-r;
var temparr=[];
//..........................................................................
//此函数起作用:如果列表中存在对象,则输出false;如果对象不存在,则输出true
函数containsObject(对象,列表){
var i;
对于(i=0;i