#javascript
#javascript
Вопрос:
у меня есть два массива, в зависимости от выбора языка, которые должны изменять значения меток
var GlobalArray = {
lang:'english'
}
var arrayValues = {
data: {
english:
{
fname: 'FirstName',
},
spanish:
{
fname: '1221',
}
}
}
когда lang получает английский, должен отображаться английский массив. когда в lang получено значение на испанском языке, должны отображаться испанские fname и lname .
попробуйте объединить как значение массива, так и глобальный массив в javascript, это показывает проблемы.как показано ниже
arrayValues.data."" GlobalArray.lang "".fname
Комментарии:
1. у меня есть два массива …. у вас нет никакого массива!!!
2.
arrayValues.data[GlobalArray.lang].fname
это то, чего вы хотите?3. «это показывает проблемы. как показано ниже» — В чем проблема, которую он показывает?
4. У вас даже нет ОДНОГО массива
5. во-первых, поймите разницу между объектом json и массивом. функции массива не будут работать с object.
Ответ №1:
arrayValues.data[GlobalArray.lang].fname
используйте это, чтобы получить значения в массиве value для, например arrayValues.data["english"].fname
arrayValues.data."" GlobalArray.lang "".fname
проблема может быть Unexpected string
Ответ №2:
Поскольку ваше значение содержится в переменной ( GlobalArray.lang
свойстве), вы должны использовать обозначение доступа в скобках для доступа к нужному подобъекту в 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>