Динамический доступ к объектам массива - PullRequest
0 голосов
/ 27 января 2020

У меня есть массив ниже, и я пытаюсь получить доступ к объектам массива на основе ключа динамически, но он не дает мне точную информацию об объекте, я получаю значения table1 / table2 динамически и на основании этого я пытаюсь получить детали таблицы

var arr = [{"table1":{"tablename":"table1","tablecolumns":"no","patternCheckStatus":"true","columns":[{"columnname":"DescriptionGovt","datatype":"AlphaNumeric","patternregex":"(lll);;;"},{"columnname":"GovtGrant","datatype":"Alphabetic","patternregex":"(lkkll)"}]}},{"table2":{"tablename":"table2","tablecolumns":"no","patternCheckStatus":"false","columns":[{"columnname":"DateItem","datatype":"LowerCase","patternregex":"(3rdtable)hhhh"}]}}]

var id = table1;
console.log("obj " + JSON.stringify(arr[0].id));

Я получаю неопределенное значение в консоли и меняю идентификатор на фактическое имя ключа. Я получаю информацию об объекте .. console.log("obj "+ JSON.stringify(arr[0].table1));

Ответы [ 3 ]

0 голосов
/ 27 января 2020

это будет работать ==>

var id ="table1";
console.log(" obj = "+JSON.stringify(arr[0][id]));

или

console.log(" obj = "+arr[0].table1);

. В первом примере вы воспринимаете свой объект как json путем его строкового преобразования, а во втором мы используем его как POJO.

0 голосов
/ 28 января 2020

Вместо arr[0].id использование arr[0][id].

  • arr[0].id эквивалентно доступу к полю id из первого элемента массива arr
  • arr[0][id] эквивалентно доступу к полю ${id} (то есть к полю, в котором есть ключ, значение переменной id) из первого элемента массива arr
0 голосов
/ 27 января 2020

Попробуйте это.

var id = 'table1'; console.log("obj " + JSON.stringify(arr[0][id]));

...