You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Code.org作业问题:如何根据选中艺术家过滤歌曲列表

问题分析与修复方案

代码里的核心错误

  • 过滤逻辑完全错位:你现在拿歌曲名数组和艺术家数组做相等判断,这两个完全不是同一类数据,根本不可能匹配上。正确逻辑应该是:遍历艺术家数据集,当某个位置的艺术家等于你选中的目标艺术家时,把对应位置的歌曲名加入结果列表。
  • 冗余的数组存储:你只随机选了一位艺术家,没必要用filteredArtist数组来存,直接用artistName变量就足够。

修正后的代码

function artistPicker() {
  var index;
  filteredSongName = [];
  // 随机获取一个艺术家的索引
  index = randomNumber(0, artistData.length - 1);
  var artistName = artistData[index];
  
  // 遍历数据集,筛选对应艺术家的所有歌曲
  for (var i = 0; i < artistData.length; i++) {
    // 检查当前索引的艺术家是否和选中的一致
    if (artistData[i] == artistName) {
      appendItem(filteredSongName, songNameData[i]);
    }
  }
  
  setScreen("displayScreen");
  // 优化显示格式,让结果更易读
  setText("textOutput", artistName + "的歌曲:\n" + filteredSongName.join(", "));
}

修正说明

  1. 移除了不必要的filteredArtist数组,直接用artistName存储选中的艺术家
  2. 把循环内的判断条件改成artistData[i] == artistName,确保能匹配到对应艺术家的歌曲
  3. 用join(", ")把歌曲数组转换成逗号分隔的字符串,加上换行让显示结果更清晰

内容的提问来源于stack exchange,提问作者Kavro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:20:45