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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.