0

I am trying to update JSON based on user input.

I have an existing JSON array:

 colorDataInitial = {
   "ML1TEST1" : "#120101",
   "ML1TEST2" : "#120101",
   "ML1TEST3" : "#120101",
   "ML1TEST4" : "#120101",
   "ML1TEST5" : "#120101",
  }

And want to update one of these to a new color based on user input:

var roomID = $('#room').val();

But when I attempt to loop through this the dot notation only adds as a new key:

  var arrayLength = roomArray.length;
  for (var i = 0; i < arrayLength; i++) {

    if (roomArray[i] == roomID) {

      var colorDataTest.roomID = "#FF1C1C"  

    } else {

      var colorDataTest.roomID = ("ML1TEST" + i);

    }
  }

Output:

ML1TEST1: "#120101"ML1TEST2: "#120101"ML1TEST3: "#120101"ML1TEST4: "#120101"ML1TEST5: "#120101"roomID: "#FF1C1C"

How would I get it to accept the string as the user input?

Thanks for any help

EHarpham
  • 602
  • 1
  • 17
  • 34

1 Answers1

1

You probably need to use:

colorDataTest[roomID]

Instead of:

colorDataTest.roomID

The .roomID method looks for a property named roomID on colorDataTest.
The square bracket looks for a property with the name from the value of roomID, in colorDataTest.

For example:

var myVar = 'aString';

var myObj = {
    aString: 123,
    myVar:   456
}

console.log(myObj[myVar]); // 123
console.log(myObj.myVar);  // 456
Cerbrus
  • 70,800
  • 18
  • 132
  • 147