Javascript objects consist of key-value pairs and are one of the most common data structures in Javascript.
To update all values in an object, the easiest way is to:
Object.keys
to get all keys of the object.forEach
or for
.
For example:
let myObject = {
name: "John",
skillItem1: 4,
skillItem2: 7,
skillItem3: 2,
skillItem4: 1
}
// Updates any numerical values that are more than or equal to 4, and changes them to 10:
Object.keys(myObject).forEach((item) => {
if(typeof myObject[item] == "number" && myObject[item] >= 4) {
myObject[item] = 10
}
})
console.log(myObject)
// Returns:
// let myObject = {
// name: "John",
// skillItem1: 10,
// skillItem2: 10,
// skillItem3: 2,
// skillItem4: 1
You don't have to apply logic - but it's usually useful. You can also achieve this with a for
loop - which is slightly faster than using forEach
:
let myObject = {
name: "John",
skillItem1: 4,
skillItem2: 7,
skillItem3: 2,
skillItem4: 1
}
// Updates any numerical values that are more than or equal to 4, and changes them to 10:
for(let item of Object.keys(myObject)) {
if(typeof myObject[item] == "number" && myObject[item] >= 4) {
myObject[item] = 10
}
}
console.log(myObject)
// Returns:
// let myObject = {
// name: "John",
// skillItem1: 10,
// skillItem2: 10,
// skillItem3: 2,
// skillItem4: 1
To update only one value in an object, use the square bracket notation []
to select which key you want to update. For example:
let myObject = {
name: "John",
skillItem1: 4,
skillItem2: 7,
skillItem3: 2,
skillItem4: 1
}
// Updates `skillItem2` to 15
myObject['skillItem2'] = 15;
Javascript objects are created by reference, which is a fancy way of saying that when we make the changes above, we are mutating the original object. That also means that Object.values()
does not allow us to update the values of the object, which is why we have to use Object.keys()
.
Also published here.