У меня есть объект:
var contacts =
{
'KxN5RVjE1zoGqrzYKOV' :
{email: "[email protected]", firstName: "Lora", lastName: "Did"},
'-KxN7AkNyiVjMYReZzbQ':
{email: "[email protected]", firstName: "Tom", lastName: "Smith"},
'-KxN743hpoTVWIqR75XD':
{email: "[email protected]", firstName: "Polina", lastName: "Polina"}
};
Мне нужно сделать ключ ключом к ценности, поэтому он будет выглядеть так:
var contacts =
{
'KxN5RVjE1zoGqrzYKOV' :
{email: "[email protected]", firstName: "Lora", lastName: "Did", id:'KxN5RVjE1zoGqrzYKOV'},
'-KxN7AkNyiVjMYReZzbQ':
{email: "[email protected]", firstName: "Tom", lastName: "Smith", id: '-KxN7AkNyiVjMYReZzbQ'},
'-KxN743hpoTVWIqR75XD':
{email: "[email protected]", firstName: "Polina", lastName: "Polina", id:'-KxN743hpoTVWIqR75XD'}
};
Это код, который у меня есть до сих пор, который ничего не добавляет, просто консоль того же старого объекта:
var results = Object.keys(contacts).map((key, id) => {
var contact = contacts[key];
Object.assign({}, contact, {id: key});
console.log(contact);
});
Любые мысли, чего я не хватает, и что еще я могу попробовать?
Если вы хотите создать новый объект, а не его модификацию, попробуйте reduce
-
var results = Object
.keys(contacts)
.reduce((newObj, key) => Object.assign(
newObj,
{[key]: Object.assign({id: key}, contacts[key])}
), {})
Если вы не возражаете, чтобы изменить исходный объект, вы можете просто использовать цикл forEach
через ключи и добавить id
к каждому элементу:
var contacts =
{
'KxN5RVjE1zoGqrzYKOV' :
{email: "[email protected]", firstName: "Lora", lastName: "Did"},
'-KxN7AkNyiVjMYReZzbQ':
{email: "[email protected]", firstName: "Tom", lastName: "Smith"},
'-KxN743hpoTVWIqR75XD':
{email: "[email protected]", firstName: "Polina", lastName: "Polina"}
};
Object.keys(contacts).forEach(key => {
contacts[key]['id'] = key;
});
console.log(contacts);
return Object.assign(...)
.map
отображает входные и выходные данные. Вы не вернули ничего, так чтоundefined
был возвращен неявно для каждого ключа. Вот почему ваше решение дало[undefined,undefined,undefined]