2

newbie question: is there a better way to construct json object in Angular? Currently I can only do the following:

var fieldName1 = 'name1';
var fieldValue1 = 'value1';
var fieldName2 = 'name2';
var fieldValue2 = 'value2';

//**failed to compile**
// var result = {{fieldName1:fieldValue1},{fieldName2,fieldValue2}};

var object1 = {};
object1[`${fieldName1}`] = fieldValue1;
var object2 = {};
object2[`${fieldName2}`] = fieldValue2;

var result = {object1, object2};

The field names "name1", "name2" are not static values. The expected result is:

{
  { name1 : "value1" },
  { name2 : "value2" }
}

7 Answers 7

3

Just Run The Snippet , you will get the idea :

var fieldName1 = 'name1';
var fieldValue1 = 'value1';
var fieldName2 = 'name2';
var fieldValue2 = 'value2';

var object = {};
object[fieldName1] = fieldValue1;
object[fieldName2] = fieldValue2;

console.log(object);

Sign up to request clarification or add additional context in comments.

Comments

1

Use this:

let object = {}
for(let field of allFields){
    object[field] = value
}

Here allFields is an array with all fields.

Comments

0

Use this if you want to make the array of value into JSON Object.

var fieldName = ['name1','name2'];
var fieldValue =['value1','value2'];
var object = {};
  for(i=0;i<fieldName.length;i++){
    object[fieldName[i]]=fieldValue[i];
   }
  console.log(object);

Comments

0

Try this:

var fieldName1 = 'name1';
var fieldValue1 = 'value1';
var fieldName2 = 'name2';
var fieldValue2 = 'value2';
var object = {};
object[fieldName1] = fieldValue1;
object[fieldName2] = fieldValue2;
object = JSON.stringify(object);
object=object.replace(/"(\w+)"\s*:/g, '$1:');
console.log(object);

Comments

0

Observation :

  • expected result in OP is not having a valid JSON.

    enter image description here

Solutions :

  • Array of objects :

var fieldName1 = 'name1';
var fieldValue1 = 'value1';
var fieldName2 = 'name2';
var fieldValue2 = 'value2';

var object1 = {};
var object2 = {};

object1[fieldName1] = fieldValue1;
object2[fieldName2] = fieldValue2;

console.log(new Array(object1, object2));

  • single object with multiple properties :

var fieldName1 = 'name1';
var fieldValue1 = 'value1';
var fieldName2 = 'name2';
var fieldValue2 = 'value2';

var jsonObject = {};

jsonObject[fieldName1] = fieldValue1;
jsonObject[fieldName2] = fieldValue2;

console.log(jsonObject);

Comments

0
let object = {};
someRequest.forEach((value: string, key: string) => {
    object[key]=value;
})

1 Comment

The provided answer was flagged for review as a Low Quality Post. Here are some guidelines for How do I write a good answer?. This provided answer may be correct, but it could benefit from an explanation. Code only answers are not considered "good" answers. From review.
0

For Angular 11 or greater, you need declare the type, example:

type tplotOptions = {
    [key: string]: boolean
}
const plotOptions: tplotOptions = {
    train_1: true,
    train_2: true
}

or

type tplotOptions = {
    [key: string]: string
}
const plotOptions: tplotOptions = {
    train_1: 'data1',
    train_2: 'data2'
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.