Hoe javascript met matrixwaarde bij te werken?

Ik heb een array van 3 objecten van de keyValue-constructor in javacsript:

 function keyValue(key, value){
    this.Key = key;
    this.Value = value;
  };
  var array = [];
  array.push(new keyValue("a","1"),new keyValue("b","2"),new keyValue("c","3"));

Ik heb ook een functie ‘Update’ die keyValue object as parameterneemt en de waarde van dat object in de array bijwerkt:

 function Update(keyValue, newKey, newValue)
  {
    //Now my question comes here, i got keyValue object here which i have to 
    //update in the array i know 1 way to do this 
    var index = array.indexOf(keyValue);
    array[index].Key = newKey;
    array[index].Value = newValue; 
  }

Maar ik wil een betere manier om dit te doen, als die er is.


Antwoord 1, autoriteit 100%

“Maar ik wil weten hoe ik dit beter kan doen, als die er is?”

Ja, aangezien u het originele object al lijkt te hebben, is er geen reden om het opnieuw uit de array op te halen.

 function Update(keyValue, newKey, newValue)
  {
    keyValue.Key = newKey;
    keyValue.Value = newValue; 
  }

Antwoord 2, autoriteit 74%

Waarom geen object1gebruiken?

var dict = { "a": 1, "b": 2, "c": 3 };

Dan kun je het zo bijwerken

dict.a = 23;

of

dict["a"] = 23;

Als je2een bepaalde sleutel niet wilt verwijderen, is dat zo simpel als:

delete dict.a;

1Zie Objecten versus arrays in Javascript voor sleutel/waarde-paren.
2Zie de delete-operator.


Antwoord 3, autoriteit 42%

function Update(key, value)
{    
    for (var i = 0; i < array.length; i++) {
        if (array[i].Key == key) {
            array[i].Value = value; 
            break;
        }
    }
}

Antwoord 4, autoriteit 16%

Wat dacht je van;

function keyValue(key, value){
    this.Key = key;
    this.Value = value;
};
keyValue.prototype.updateTo = function(newKey, newValue) {
    this.Key = newKey;
    this.Value = newValue;  
};
array[1].updateTo("xxx", "999");   

Antwoord 5, autoriteit 11%

Als u een element in een array opnieuw wilt toewijzen, kunt u het volgende doen:

var blah = ['Jan', 'Fed', 'Apr'];
console.log(blah);
function reassign(array, index, newValue) {
    array[index] = newValue;
    return array;
}
reassign(blah, [2], 'Mar');

Antwoord 6

Dus ik had een probleem dat ik nodig had. Ik had een arrayobject met waarden. Een van die waarden die ik nodig had om bij te werken als de waarde == X.Ik de X-waarde nodig had die moet worden bijgewerkt naar de y-waarde. Kijken over voorbeelden hier heeft geen van hen gewerkt voor wat ik nodig had of wilde. Ik heb eindelijk een eenvoudige oplossing voor het probleem ontdekt en was eigenlijk verrast dat het werkte. Normaal gesproken wil ik de volledige code-oplossing in deze antwoorden plaatsen, maar vanwege de complexiteit die ik hier niet doe. Als iemand vindt dat ze deze oplossing niet kunnen laten werken of meer code nodig hebben, laat het me weten en ik zal proberen dit op een later tijdstip te updaten om te helpen. Voor het grootste deel als het array-object de waarden heeft genoemd, moet deze oplossing werken.

           $scope.model.ticketsArr.forEach(function (Ticket) {
                if (Ticket.AppointmentType == 'CRASH_TECH_SUPPORT') {
                    Ticket.AppointmentType = '360_SUPPORT'
                }
            });

Volledig voorbeeld hieronder _____________________________________________________

  var Students = [
        { ID: 1, FName: "Ajay", LName: "Test1", Age: 20 },
        { ID: 2, FName: "Jack", LName: "Test2", Age: 21 },
        { ID: 3, FName: "John", LName: "Test3", age: 22 },
        { ID: 4, FName: "Steve", LName: "Test4", Age: 22 }
    ]
    Students.forEach(function (Student) {
        if (Student.LName == 'Test1') {
            Student.LName = 'Smith'
        }
        if (Student.LName == 'Test2') {
            Student.LName = 'Black'
        }
    });
    Students.forEach(function (Student) {
        document.write(Student.FName + " " + Student.LName + "<BR>");
    });

Other episodes