Вы на правильном пути.Я хотел бы пойти дальше и сделать это так.Таким образом, вы можете передать массив значения, которое хотите изменить (т.е. ['marks', 'sub1']
), и он изменит любое значение, которое вы хотите.Ниже приведен пример того, как я могу изменить student.marks.sub1
и student.address.city
:
var student = {
name: 'Tom',
address: {
pincode: 43301,
street: '12th Main',
city: 'Some city',
},
marks: {
sub1: 111,
sub2: 222
}
}
function updateProperty(student, keys, value) {
obj = student;
for(var i=0; i<keys.length-1; i++){
obj = obj[keys[i]];
}
obj[keys[i]] = value;
return student;
}
console.log(updateProperty(student, ['marks', 'sub1'], 125));
console.log(updateProperty(student, ['address', 'city'], 'New York'));