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