我有两个数组,根据语言选择必须更改标签值
var GlobalArray = {
lang:'english'
}
var arrayValues = {
data: {
english:
{
fname: 'FirstName',
},
spanish:
{
fname: '1221',
}
}
}
当lang获得英语时,需要显示英语数组。当以lang表示西班牙文值时,西班牙文fname和lname应该显示。
尝试在javascript中同时连接数组值和全局数组,它显示问题。如下所示
arrayValues.data.""+GlobalArray.lang+"".fname
答案 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>