JavaScript да id орқали бир хусусиятни ўзгартириш
Сизга объектнинг ўзини эмас, балки маълум бир хусусиятини ўзгартириш талаб этилиши мумкин. Буни қандай бажаришни кўрамиз.
Фарз қилайлик, arr ўзгарувчисида
объектлар массиви мавжуд:
javascriptlet arr = [
{
id: 'GYi9GauC4gBF1e2SixDvu',
prop1: 'value11',
prop2: 'value12',
prop3: 'value13',
},
{
id: 'IWSpfBPSV3SXgRF87uO74',
prop1: 'value21',
prop2: 'value22',
prop3: 'value23',
},
{
id: 'JAmjRlfQT8rLTm5tG2m1L',
prop1: 'value31',
prop2: 'value32',
prop3: 'value33',
},
];
Фарз қилайлик, ўзгарувчиларда элементнинг id си,
ўзгартириладиган хусусиятнинг номи ва хусусиятнинг
янги қиймати сақланган:
javascriptlet id = 'IWSpfBPSV3SXgRF87uO74';
let prop = 'prop1';
let value = '!!!';
Масалани ечиш учун деструктуризация ва ҳисобланадиган хусусият номлари дан фойдаланиш қулай:
javascriptlet res = arr.map(elem => {
if (elem.id === id) {
return {...elem, [prop]: value};
} else {
return elem;
}
});
Қуйидаги ўзгарувчилар берилган:
javascriptlet id = 'JAmjRlfQT8rLTm5tG2m1L';
let prop = 'prop2';
Тугма яратинг, уни босганда кўрсатилган id га эга
бўлган массив элементи олиниб, унда кўрсатилган номдаги
хусусият олинади ва шу хусусият қийматининг охирига
'!' белгиси қўшилади.
Фарз қилайлик, иккита хусусият номи билан иккита ўзгарувчи берилган:
javascriptlet id = 'JAmjRlfQT8rLTm5tG2m1L';
let prop1 = 'prop2';
let prop2 = 'prop3';
Олдинги масалани шундай модификация қилингки, бир марта клик қилганда ўзгартириш ишлари иккита кўрсатилган хусусият учун бирданинг бажарилсин.
Назарияда келтирилган ечимни Object.assign ёрдамида
объектни нусхалаш орқали қайта ташкил қилинг.