如何将javascript的一个变量连接到另一个变量

时间:2019-04-01 09:42:31

标签: javascript

我有两个数组,根据语言选择必须更改标签值

var GlobalArray = { 
    lang:'english'
}


var arrayValues = {

    data: {
         english:
        {
          fname: 'FirstName',

          },
           spanish:
        {
          fname: '1221',

          }
    }
}

当lang获得英语时,需要显示英语数组。当以lang表示西班牙文值时,西班牙文fname和lname应该显示。

尝试在javascript中同时连接数组值和全局数组,它显示问题。如下所示

arrayValues.data.""+GlobalArray.lang+"".fname

2 个答案:

答案 0 :(得分:4)

arrayValues.data[GlobalArray.lang].fname使用它来获取数组值中的值,例如arrayValues.data["english"].fname

arrayValues.data.""+GlobalArray.lang+"".fname的问题可能是Unexpected string

答案 1 :(得分:1)

由于您的值包含在变量(GlobalArray.lang属性)中,因此您必须使用bracket access notation来访问arrayValues.data中正确的子对象:

const fname = arrayValues.data[GlobalArray.lang].fname

要使其与串联一起使用,您必须使用eval()评估结果表达式,我不建议这样做:

const fname = eval('arrayValues.data.' + GlobalArray.lang + '.fname')

这里是一个例子:

const GlobalArray = { 
  lang: 'english'
}

const arrayValues = {
  data: {
   english: { fname: 'FirstName' },
   spanish: { fname: '1221'  }
  }
}

function langChanged(value) {
  GlobalArray.lang = value;
  console.log(arrayValues.data[GlobalArray.lang].fname);
  console.log(eval('arrayValues.data.' + GlobalArray.lang + '.fname'));
}

langChanged('english');
Select a language:
<select onchange="langChanged(event.target.value)">
  <option value="english">English</option>
  <option value="spanish">Spanish</option>
</select>