0

Here method is dynamic based on user input method value will be change

var method = 'GetActiveUserData';

How can i concatenate ? please help below expected output added

var result =  data["s:En"]["s:Body"][0].`${method}`Response[0].`${method}`Result[0]["a:datas"][0]["b:data"];

Expected output:

data["s:En"]["s:Body"][0].GetActiveUserDataResponse[0].GetActiveUserDataResult[0]["a:datas"][0]["b:data"];
martin kumar
  • 65
  • 1
  • 2
  • 9
  • `+` is string concatenation in javascript – Taplar May 06 '20 at 14:33
  • Look into this question it may have your answer : [Javascript dot operator inside strings](https://stackoverflow.com/questions/61531767/using-opearator-inside-backticks-javascript) – Hadi Pawar May 06 '20 at 14:35

2 Answers2

3

Use [] on objects to access properties based on an expression:

var result = data
  ["s:En"]
  ["s:Body"][0]
  [`${method}Response`][0]
  [`${method}Result`][0]
  ["a:datas"][0]
  ["b:data"];

obj['blah'] is logically equivalent to obj.blah, so if method is GetActiveUserData, obj[`${method}Response`] is equivalent to obj.GetActiveUserDataResponse.

Jacob
  • 77,566
  • 24
  • 149
  • 228
0

Is this what you want?

Template string is available in most browser

var result =  `data["s:En"]["s:Body"][0].${method}Response[0].${method}Result[0]["a:datas"][0]["b:data"]`;

But if it doesn't work, you may try a simple string concatenate:

var result =  'data["s:En"]["s:Body"][0].' + method + 'Response[0].' + method + 'Result[0]["a:datas"][0]["b:data"]';
gie3d
  • 766
  • 4
  • 8
  • var rawAllocations = ata["s:En"]["s:Body"][0].${method}Response[0].${method}Result[0]["a:datas"][0]["b:data"]; ^ SyntaxError: Unexpected token { – martin kumar May 06 '20 at 14:39
  • Template string should be available in most browser but if it doesn't work, you may use a simple javascript string concatenate. I'll update my answer – gie3d May 06 '20 at 14:44