如何从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
相关产品推荐
相关产品推荐

