Заменить ключ ассоциативного массива его значением
Как получить из такого объекта:
{
'1': ['Яблоко', '600', 1, '59'],
'2': ['Банан', '1000', 1, '59'],
'13': ['Апельсин', '10', 1, '64'],
'14': ['Груша', '7', 2, '64']
}
такой же, но заменив ключ строки значением из 4-го элемента массива и скомпоновав по нему, получая такой вывод:
{
'59': [ ['Яблоко', '600', 1], ['Банан', '1000', 1] ],
'64': [ ['Апельсин', '10', 1], ['Груша', '7', 2] ]
}
Получается только объединяя в строку и то с ошибкой
var json = {
'1': [ ' Яблоко', '600', 2, '59' ],
'2': [ ' Банан', '1000', 3, '59' ],
'13': [ ' Апельсин', '10', 2, '64' ],
'14': [ ' Груша', '7', 3, '64' ]
};
var mags = JSON.stringify(json);
var results = {};
mags = JSON.parse(mags);
for(var i in mags) {
results[mags[i][3]]+=mags[i];
//console.log(zakazs[i]);
}
console.log(results);
Ответы (2 шт):
Автор решения: Денис Степанов
→ Ссылка
var json = {
'1': [' Яблоко', '600', 2, '59'],
'2': [' Банан', '1000', 3, '59'],
'13': [' Апельсин', '10', 2, '64'],
'14': [' Груша', '7', 3, '64']
};
const results = Object.values(json).reduce((acc, value) => {
!acc[value[3]] && (acc[value[3]] = []);
acc[value[3]].push(value.slice(0, -1))
return acc;
}, {});
console.log(results);
var json = {
'1': [' Яблоко', '600', 2, '59'],
'2': [' Банан', '1000', 3, '59'],
'13': [' Апельсин', '10', 2, '64'],
'14': [' Груша', '7', 3, '64']
};
const results = Object.values(json).reduce((acc, value) => {
acc[value[3]] = [...(acc[value[3]] || []), value.slice(0, -1)]
return acc;
}, {});
console.log(results);
Автор решения: Александр Лесив
→ Ссылка
let data = {
'1': ['Яблоко', '600', 1, '59'],
'2': ['Банан', '1000', 1, '59'],
'13': ['Апельсин', '10', 1, '64'],
'14': ['Груша', '7', 2, '64']
};
let result = {};
for (let key in data){
let newKey = data[key][3];
if(!result[newKey]){
result[newKey] = [];
}
result[newKey].push(data[key].slice(0, 3));
}
console.log(result)