Удалить и Установить элемент в JSON по Пути(Массиву)

Рейтинг: 0Ответов: 1Опубликовано: 11.03.2023

В общем нужно написать 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;
};

Но вот остальные у меня сделать не получилось(

Можете пожалуйста помочь с этим

Ответы

▲ 0Принят

Вот как может выглядеть функция 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);
};