Reputation: 962
i have two arrays,based on the language selection have to change labels values
var GlobalArray = {
lang:'english'
}
var arrayValues = {
data: {
english:
{
fname: 'FirstName',
},
spanish:
{
fname: '1221',
}
}
}
when lang got english ,english array need to show. when spanish value got in lang, spanish fname and lname should show .
try to concatenate both array value and global array in javascript,it showing issues.like below
arrayValues.data.""+GlobalArray.lang+"".fname
Upvotes: 0
Views: 191
Reputation: 13993
Since your value is contained in a variable (GlobalArray.lang
property), you have to use bracket access notation to access the right sub-object in arrayValues.data
:
const fname = arrayValues.data[GlobalArray.lang].fname
To make it work with concatenation, you would have to evaluate the resulting expression with eval(), which I do not recommend:
const fname = eval('arrayValues.data.' + GlobalArray.lang + '.fname')
Here is an example:
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>
Upvotes: 1
Reputation: 532
arrayValues.data[GlobalArray.lang].fname
use this to get values in array value for e.g.arrayValues.data["english"].fname
arrayValues.data.""+GlobalArray.lang+"".fname
issue might be Unexpected string
Upvotes: 4