Answer
t.me/js_testОтвет:
{ '1': 2, '2': 4, '3': { '4': 8, '5': { '6': 12 } } }
Объяснение:
У функции JSON.parse есть один необязательный параметр который называется reviver, если передать туда функцию то можно как-нибудь изменить значение каждого получаемого элемента перед тем как всё соберётся в один объект. Если идти по порядку то сначала нужно обработать вариант когда reviver принимает весь объект целиком, в этот момент значение key равно пустой строке - нужно просто вернуть этот объект. Далее в примере идёт проверка на то является ли значение(value) числом, если да то возвращается это число умноженное на два, если же нет то значение возвращается нетронутым.
Код:
const obj = { 1: 1, 2: 2, 3: { 4: 4, 5: { 6: 6 } } };
const strObj = JSON.stringify(obj);
const pObj = JSON.parse(strObj, (key, value) => {
if (key === "") {
return value;
}
if (typeof value === "number") {
return value * 2;
}
return value;
});
console.log(pObj);