JavaScript中的动态变量名[重复]

iugsix8n  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(116)

此问题在此处已有答案

Accessing an object property with a dynamically-computed name(20个答案)
昨天就关门了。
我尝试做一个循环函数,将获得歌词诗句从数组。我有一个工作的函数,但不是与动态变量。所有我想要的是动态的var名称在某种程度上。在数组项有从“ve1”到“ve20”的值。所以我需要得到这个ve[i]像显示below,但它不工作,因为它应该。

function testingLyrics(){
  for (let i = 0; i < allMusic[indexNumb - 1].lyrics.length; i++) {
    if(allMusic[indexNumb - 1].lyrics.ve[i].stamp){

      /* Action */

  }}
}

字符串
第1081章阵法是这样的

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 having a good time",
      },
      ve2:{
        ls: "Man, I feel just like a rockstar (ayy, ayy)",
      },
      ve3:{
        ls: "All my brothers got that gas",
      },
     },
    },
]

0lvr5msh

0lvr5msh1#

通过这种方式,你可以在for循环中使用3种常见的串联类型之一:

  1. Concat函数:
if(allMusic[indexNumb - 1].lyrics['ve'.concat(i)].stamp){
      /* Action */
     }

字符串
1.模板文字:

if(allMusic[indexNumb - 1].lyrics[`ve${i}`].stamp){
      /* Action */
     }


1.或者使用简单的加号连接:

if(allMusic[indexNumb - 1].lyrics['ve'+i].stamp){
     /* Action */
    }


我建议你使用第二种方式 2. template literals;,因为它是更好的语法,让你的代码更干净。

相关问题