Всем доброго вечера. Не получается преобразовать объект. Так то почти получилось, вот только не пойму, как на тот же ключ записать еще одно значение не переписав старое.
То что на входе.
const edit = {
300: {400: '100', 500: '200'},
400: {400: '200'}
};
const edit = {
300: {400: '100', 500: '200'},
400: {400: '200'}
};
const getUniqueKeys = prices => {
const arr = [];
for (const key in prices) {
if (Object.prototype.hasOwnProperty.call(prices, key)) {
arr.push(prices[key]);
}
}
return Object.keys(arr.reduce((result, obj) => Object.assign(result, obj), {}));
};
const uK = getUniqueKeys(edit);
const arrk = Object.keys(edit);
const newEdit = {};
for (let i = 0; i < arrk.length; i++) {
for (let y = 0; y < uK.length; y++) {
if (Object.keys(edit[arrk[i]])[y] === uK[y]) {
newEdit[uK[y]] = {[arrk[i]]: Object.values(edit[arrk[i]])[y]};
}
}
}
console.log('newEdit ', newEdit);
То что должно быть на выходе
const newObj = {
400: {300: '100', 400: '200'},
500: {300: '200'}
};
Сложность в строке
newEdit[uK[y]] = {[arrk[i]]: Object.values(edit[arrk[i]])[y]};
Что приводит к затиранию первого значения и на выходе получается
newObj = {
400: {400: '200'},
500: {300: '200'}
};
А должно получиться
newObj = {
400: {300: '100', 400: '200'},
500: {300: '200'}
};