Javascript 指定对象索引在对象内部可用
我有一个目标:Javascript 指定对象索引在对象内部可用,javascript,object,Javascript,Object,我有一个目标: var contacts = { 'KxN5RVjE1zoGqrzYKOV' : {email: "dfdfdf@dfdfd.com", firstName: "Lora", lastName: "Did"}, '-KxN7AkNyiVjMYReZzbQ': {email: "teste@test.com", firstName: "Tom", lastName: "Smith"}, '-KxN743hpoTVWIqR75XD': {emai
var contacts =
{
'KxN5RVjE1zoGqrzYKOV' :
{email: "dfdfdf@dfdfd.com", firstName: "Lora", lastName: "Did"},
'-KxN7AkNyiVjMYReZzbQ':
{email: "teste@test.com", firstName: "Tom", lastName: "Smith"},
'-KxN743hpoTVWIqR75XD':
{email: "user@test.com", firstName: "Polina", lastName: "Polina"}
};
我需要使它成为一个值的关键,因此它将如下所示:
var contacts =
{
'KxN5RVjE1zoGqrzYKOV' :
{email: "dfdfdf@dfdfd.com", firstName: "Lora", lastName: "Did", id:'KxN5RVjE1zoGqrzYKOV'},
'-KxN7AkNyiVjMYReZzbQ':
{email: "user@test.com", firstName: "Tom", lastName: "Smith", id: '-KxN7AkNyiVjMYReZzbQ'},
'-KxN743hpoTVWIqR75XD':
{email: "user@test.com", 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);
});
有什么想法我遗漏了什么,还有什么我可以尝试的吗?如果您不介意修改原始对象,您可以使用forEach循环键并向每个元素添加id: var触点= { “KxN5RVjE1zoGqrzYKOV”: {电子邮件:dfdfdf@dfdfd.com,姓:劳拉,姓:迪德}, “-kxn7aknyivjmyrezbq”: {电子邮件:teste@test.com,姓:汤姆,姓:史密斯}, “-KxN743hpoTVWIqR75XD”: {电子邮件:user@test.com,姓:波琳娜,姓:波琳娜} }; Object.keyscontacts.forEachkey=>{ 联系人[键]['id']=键; };
控制台.logcontacts 如果不介意修改原始对象,只需使用forEach循环键并向每个元素添加id即可: var触点= { “KxN5RVjE1zoGqrzYKOV”: {电子邮件:dfdfdf@dfdfd.com,姓:劳拉,姓:迪德}, “-kxn7aknyivjmyrezbq”: {电子邮件:teste@test.com,姓:汤姆,姓:史密斯}, “-KxN743hpoTVWIqR75XD”: {电子邮件:user@test.com,姓:波琳娜,姓:波琳娜} }; Object.keyscontacts.forEachkey=>{ 联系人[键]['id']=键; };
控制台.logcontacts 如果要创建新对象而不是修改,可以尝试-
如果要创建新对象而不是修改,可以尝试-
除了给出的好答案,你的解决方案也会奏效。您只需返回Object.assign。。。。映射将输入映射到输出。您没有返回任何内容,因此每个键都隐式返回未定义的内容。这就是为什么你的解决方案给出了[undefined,undefined,undefined]除了给出的好答案,你的解决方案也会起作用。您只需返回Object.assign。。。。映射将输入映射到输出。您没有返回任何内容,因此每个键都隐式返回未定义的内容。这就是为什么您的解决方案给出了[undefined,undefined,undefined]
var results = Object
.keys(contacts)
.reduce((newObj, key) => Object.assign(
newObj,
{[key]: Object.assign({id: key}, contacts[key])}
), {})