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',
},
];
Фараз қилайлик, биз массивнинг қандайдир бир элементини ўзгартирмоқчимиз. Янги маълумотлар ўзгартувчида сақлансин, масалан, мана булар:
javascriptlet data = {
id: 'IWSpfBPSV3SXgRF87uO74',
prop1: 'value21 !',
prop2: 'value22 !',
prop3: 'value23 !',
};
Келтирилган объектда id массивнинг
иккинчи элементанинг idсига мос келади,
хоссаларнинг қийматлари esa бошқача. Бошқа сўзлар
билан айтганда, data да id хоссасида
биз ўзгартирмоқчи бўлган массив элементининг
idси сақланган.
Келинг, бу ўзгаришни амалга оширайлик. Бунинг учун
массив элементларини цикл билан қайталаймиз
ва агар id изланаётган idга мос келса, элементни
алмаштирамиз, агар мос келмаса, элементни
ўзгартирмай қолдирамиз:
javascriptlet res = arr.map(elem => {
if (elem.id === data.id) {
return data;
} else {
return elem;
}
});
Кодни қисқартириш мумкин, тернар операторидан фойдаланиб:
javascriptlet res = arr.map(elem => elem.id === data.id ? data : elem);
Фараз қилайлик, ўзгартувчида массив элементининг
idси сақланган. Тугма ясаинг, уни босганда
мос келувчи массив элементи ўзгартирилсин.