Как объединить javascript из одной переменной в другую

#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>