使用map返回具有键和值的对象

时间:2018-09-05 16:18:14

标签: javascript vue.js vuejs2

我有一个响应,应该使用map返回具有指定键和值的对象

我尝试了

response.data.data = response.data.data.map((user) =>{
  return console.log({ user.id : user.name});
});

但是由于user.id

,它给了我一个错误

如何设置来自响应的密钥?

这是我的数据回复

data: [
{
    id: 2,
    name: "Orval McLaughlin",
    email: "okoch@example.org",
    contacts: "09083692343",
    created_at: "2018-09-05 15:08:54",
    updated_at: "2018-09-05 15:08:54",
    deleted_at: null
}
],

我正在使用vue js输入标签,在其中我需要将数据绑定到prop中 像这样

{2: Orval McLaughlin}

3 个答案:

答案 0 :(得分:4)

在映射函数中使用return console.log(whatever)是没有意义的,因为那样总是返回undefined .map()将创建undefined条目的数组:

let users = [{ id: 1, name: "r2d2" }]

let arr = users.map(user => console.log({ id: user.id, name: user.name}))

console.log(arr);

相反,将您的映射功能更改为此:

let users = [{
    id: 2,
    name: "Orval McLaughlin",
    email: "okoch@example.org",
    contacts: "09083692343",
    created_at: "2018-09-05 15:08:54",
    updated_at: "2018-09-05 15:08:54",
    deleted_at: null
}]

let arr = users.map(user => ({ [user.id]: user.name }))

console.log(arr);

要在变量propName中具有其属性名称的对象上创建属性,请使用方括号表示法:

let user = { [propName]: value }

请注意,您还可以使用以下符号访问对象的属性:

console.log(user[propName]);

答案 1 :(得分:2)

获得类似

的结果
{2: Orval McLaughlin}

您想要一个计算所得的属性名称:

return { [user.id] : user.name};

请注意,return console.log(somValue)始终返回未定义

答案 2 :(得分:0)

console.log()返回undefined,因此您当前的解决方案给出了所有undefined的数组。相反,您应该返回所需的对象:

response.data.data = response.data.data.map((user) =>{
  return { [user.id] : user.name};
});

请注意,您还需要用括号将用户ID密钥括起来,以便评估变量。