Удалить и Установить элемент в JSON по Пути(Массиву)
В общем нужно написать 3 функции для json(как для массива, так и для объекта) - get, set и delete которые будут работать не просто с ключом, а с массивом ключей которые идут друг за другом (путём)
get я смог сделать самостоятельно:
const get_json = (PATH, JSON_STRING) => { //PATH - МАССИВ, JSON_STRING - СТРОКА
JSON_STRING = JSON.parse(JSON_STRING);
PATH.forEach(prop => JSON_STRING = JSON_STRING[prop]);
return JSON_STRING;
};
Но вот остальные у меня сделать не получилось(
Можете пожалуйста помочь с этим
Ответы (1 шт):
Автор решения: Max Watson
→ Ссылка
Вот как может выглядеть функция set_json, которая будет устанавливать новое значение для ключ
const set_json = (PATH, JSON_STRING, NEW_VALUE) => { //PATH - МАССИВ, JSON_STRING - СТРОКА, NEW_VALUE - ЛЮБОЕ ЗНАЧЕНИЕ
let json = JSON.parse(JSON_STRING);
let currentProp = json;
PATH.forEach((prop, index) => {
if (index === PATH.length - 1) {
currentProp[prop] = NEW_VALUE;
} else {
currentProp = currentProp[prop];
}
});
return JSON.stringify(json);
};
А вот функция delete_json, которая будет удалять ключ, заданный массивом ключей
const delete_json = (PATH, JSON_STRING) => { //PATH - МАССИВ, JSON_STRING - СТРОКА
let json = JSON.parse(JSON_STRING);
let currentProp = json;
PATH.forEach((prop, index) => {
if (index === PATH.length - 1) {
delete currentProp[prop];
} else {
currentProp = currentProp[prop];
}
});
return JSON.stringify(json);
};