5

I want to get the value of an object field from JSON. I have a dynamic variable let check_permission_key = 'ratingscalename'; and have one JSON

let overwrite_key = {
  studentimage: 'student',
  ratingscalename: 'rating-scale-name',
  ratingscale: 'rating-scale-name',
  capturesettingset: 'capture-setting-set',
  capturesetting: 'capture-setting-set',
  eventlog: 'event-log',
  goalcategorie: 'goal-category',
  userimage: 'user',
  datasheetlink: 'datasheet',
  datasheetgoal: 'datasheet',
};

let get_value = overwrite_key.check_permission_key;

So I am fetching the data like this, but it is not working can anyone please help me to resolve this issue?

Phoenix1355
  • 1,589
  • 11
  • 16
Nikul Panchal
  • 1,542
  • 3
  • 35
  • 58

3 Answers3

6

To access the object property value using a variable use Bracket ([]) notation:

let overwrite_key = {'studentimage':'student','ratingscalename':'rating-scale-name','ratingscale':'rating-scale-name','capturesettingset':'capture-setting-set','capturesetting':'capture-setting-set','eventlog':'event-log','goalcategorie':'goal-category','userimage':'user','datasheetlink':'datasheet','datasheetgoal':'datasheet'};
let check_permission_key = 'ratingscalename';
let get_value = overwrite_key[check_permission_key];
console.log(get_value);
Mamun
  • 66,969
  • 9
  • 47
  • 59
3

Objects in javascript are pretty much arrays with String keys, so you can access a dynamic property like this:

let get_value = overwrite_key[check_permission_key];
Ayrton
  • 2,218
  • 1
  • 14
  • 25
-1

You can use eval() function.

let overwrite_key = {
  studentimage: 'student',
  ratingscalename: 'rating-scale-name',
  ratingscale: 'rating-scale-name',
  capturesettingset: 'capture-setting-set',
  capturesetting: 'capture-setting-set',
  eventlog: 'event-log',
  goalcategorie: 'goal-category',
  userimage: 'user',
  datasheetlink: 'datasheet',
  datasheetgoal: 'datasheet',
};
let check_permission_key = 'ratingscalename';
let get_value = eval(`overwrite_key.${check_permission_key}`);
console.log(get_value);

JavaScript eval() Function

bli07
  • 673
  • 1
  • 5
  • 16
  • 1
    You should avoid `eval`. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Do_not_ever_use_eval! – Ayrton Oct 08 '19 at 13:32
  • Yes, you are right. But it can be a solution in some situations. – bli07 Oct 08 '19 at 13:36