javascript - 无法让类方法循环工作
问题描述
我是 JS(或一般编码)的新手,我正在尝试学习一些东西。我在循环中玩弄类方法,除了搞砸并希望能学到一两件事,但我无法得到想要的结果。
这是代码:
class CD extends Media {
constructor(title, artist) {
super(title);
this._artist = artist;
this._songTitles = [];
}
get songTitles() {
return this._songTitles;
}
addSong(song) {
if (typeof song === 'string') {
this._songTitles.push(song)
} else {
console.log('You need to input the song title as a string.');
}
}
shuffle() {
const songList = this.songTitles;
const randomIndex = Math.floor(Math.random() * songList.length);
return songList[randomIndex];
}
};
const flowerBoy = new CD('Flower Boy', 'Tyler, The Creator');
flowerBoy.addSong('Foreword (feat. Rex Orange County)');
flowerBoy.addSong('Where This Flower Blooms (feat. Frank Ocean)');
flowerBoy.addSong('Sometimes...');
flowerBoy.addSong('See You Again (feat. Kali Uchis)');
const songs = flowerBoy.songTitles;
while (flowerBoy.shuffle() != 'Sometimes...') {
const randomIndex = Math.floor(Math.random() * songs.length);
console.log(flowerBoy.songTitles[randomIndex]);
};
我想要实现的是一个循环,它将继续在flowerBoy.songTitles
数组中随机播放,直到遇到 string 'Sometimes...'
。我想我已经设法实现了循环部分,因为你的输出总是显示不同数量的歌曲,但是循环不会停止'Sometimes...'
,有时会停止在不同的歌曲上。
任何帮助将不胜感激,谢谢!
解决方案
class CD extends Media {
constructor(title, artist) {
super(title);
this._artist = artist;
this._songTitles = [];
}
get songTitles() {
return this._songTitles;
}
addSong(song) {
if (typeof song === 'string') {
this._songTitles.push(song)
} else {
console.log('You need to input the song title as a string.');
}
}
shuffle() {
const songList = this.songTitles;
const randomIndex = Math.floor(Math.random() * songList.length);
return songList[randomIndex];
}
};
const flowerBoy = new CD('Flower Boy', 'Tyler, The Creator');
flowerBoy.addSong('Foreword (feat. Rex Orange County)');
flowerBoy.addSong('Where This Flower Blooms (feat. Frank Ocean)');
flowerBoy.addSong('Sometimes...');
flowerBoy.addSong('See You Again (feat. Kali Uchis)');
const songs = flowerBoy.songTitles;
const shuffleFlowerBoy = () => {
const song = flowerBoy.shuffle();
console.log(song);
if (song !== 'Sometimes...') {
return shuffleFlowerBoy();
}
return song;
}
shuffleFlowerBoy();
推荐阅读
- vba - Word VBA 查找和替换
- python - 使用 FOR 循环将 CSV 文件读入单独的数据帧
- selenium - Wiremock:使用wiremock代理将应用程序请求转发到外部服务器
- c# - 从 Controller 返回文件和字符串以在 ASP.NET MVC 中查看
- windows - 在 Windows 上使用 jdk kinit 创建可更新的 kerberos 票证
- javascript - 尝试使用 ggr+selenoid 时出错:ECONNREFUSED 127.0.0.1:443
- python - 如何在 MatPlotLib 中构建“散点-气泡”图?
- wordpress - 如何创建自动滚动?
- python - 如果我想在 pytorch 中使用 F1 分数作为指标,如何解决张量不匹配问题?
- python - 从两行车牌扫描号码时混淆字符