我正在尝试执行一个循环函数,从数组中获取歌词。我确实有一个工作函数,但没有动态变量。我想要的只是在某种程度上动态变量名称。在数组项中,有从“ve1”到“ve20”的值。 所以我需要像下面所示的那样得到这个 ve[i],但它没有按预期工作。
function testingLyrics(){
for (let i = 0; i < allMusic[indexNumb - 1].lyrics.length; i++) {
if(allMusic[indexNumb - 1].lyrics.ve[i].stamp){
/* Action */
}}
}
数组看起来像这样
var allMusic = [
{
lyrics:{
ve1:{
ls: "The club isn't the best place to find a lover",
},
ve2:{
ls: "So the bar is where I go",
},
ve3:{
ls: "Me and my friends at the table doing shots",
},
},
},
{
lyrics:{
ve1:{
ls: "I've been fuckin' hoes and poppin' pillies",
},
ve2:{
ls: "Man, I feel just like a rockstar (ayy, ayy)",
},
ve3:{
ls: "All my brothers got that gas",
},
},
},
]
您似乎想使用 ve[i] 表示法动态访问歌词对象的属性。但是,在 JavaScript 中,您无法使用点符号来访问具有动态键的属性。
您应该使用方括号表示法。以下是如何修改函数来实现此目的:
function testingLyrics() {
for (let i = 1; i <= allMusic[indexNumb - 1].lyrics.length; i++) {
const currentVerse = allMusic[indexNumb - 1].lyrics['ve' + i];
if (currentVerse && currentVerse.stamp) {
/* Action */
console.log(currentVerse.ls); // Example action: log the lyrics
}
}
}
这样,您可以使用方括号表示法动态访问 ve[i] 属性。
注意:我将循环条件调整为从 1 开始,因为你的诗句被命名为 ve1、ve2 等。如果你的诗句从 0 开始,你可以保持原始代码中的循环条件。