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

如何从forEach循环中取出AllMainSongsIndex变量并进行使用

问题原因

forEach 方法本身没有返回值(永远返回undefined),你在回调函数内部的return语句不会被外层接收,所以无法直接通过return获取循环内的AllMainSongsIndex变量。

解决方法

方法1:用外部数组存储所有结果

在循环外声明一个空数组,遍历过程中将每次得到的AllMainSongsIndex推入数组,循环结束后直接使用该数组即可:

// 提前声明空数组存储结果
const allMainSongsIndexes = [];
songsItems.forEach((element, i) => {
      let Allcovers = element.querySelectorAll(".cover")
      Allcovers[0].src = songs[i].coversPath
      let AllNames = element.getElementsByClassName("Names");
      AllNames[0].innerHTML = songs[i].songName;
      let AllMainSongsIndex=element.querySelector(".currentsoundGIF").id;
      // 把当前值存入数组
      allMainSongsIndexes.push(AllMainSongsIndex);
});

// 循环结束后就可以直接使用 allMainSongsIndexes 里的所有值
console.log(allMainSongsIndexes);

方法2:改用map方法遍历

如果核心需求是收集所有AllMainSongsIndex,可以直接用map方法,它会自动把每次回调的返回值组装成新数组返回:

const allMainSongsIndexes = songsItems.map((element, i) => {
      let Allcovers = element.querySelectorAll(".cover")
      Allcovers[0].src = songs[i].coversPath
      let AllNames = element.getElementsByClassName("Names");
      AllNames[0].innerHTML = songs[i].songName;
      return element.querySelector(".currentsoundGIF").id;
});

// 直接拿到所有值组成的数组
console.log(allMainSongsIndexes);

补充说明

如果你只需要获取符合特定条件的单个AllMainSongsIndex,可以用find方法替代循环,匹配到目标值就会终止遍历,性能更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:09:04