функция карты сохраняет результат на объекте - PullRequest
0 голосов
/ 05 сентября 2018

вот так выглядит мой ответ

data: [
    {
        id: 3,
        name: "Oliver Green",
        email: "test@gmail.com",
        contacts: "09179878564"
    },
    {
        id: 2,
        name: "Orval McLaughlin",
        email: "okoch@example.org",
        contacts: "09083692343",
    }
]

Я использовал функцию map для получения идентификатора пользователя и имени пользователя, теперь я пытаюсь сохранить весь результат в Object

data(){
    return {
        autoComplete:{},
    }
},

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

Я получаю результат, но получаю только один

autoComplete:Object
    2:"Orval McLaughlin"

результат должен быть

autoComplete:Object
    3: "Oliver Green"
    2: "Orval McLaughlin"

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Попробуйте, чтобы не оборачивать его в массив.

response.data.data.map((user) => {
return vm.autoComplete = Object.assign(vm.autoComplete, {[user.id] : user.name}); }
0 голосов
/ 05 сентября 2018

Кажется, что автозаполнение будет перезаписано для каждого.

Может быть, вы можете попробовать это:

  data(){
      return {
          autoComplete:{},
      }
  },

  let vm = this;

  vm.autoComplete = response.data.data.map((user) => {
      return { [user.id] : user.name};
  });
0 голосов
/ 05 сентября 2018

Вам необходимо вернуть объект из map(), а не результат присваивания. В настоящее время вы назначаете vm.autoComplete на каждой итерации. После того, как вы сделаете это, вы можете присвоить вывод map переменной, которую вы хотите:

let data = [
    {
        id: 3,
        name: "Oliver Green",
        email: "test@gmail.com",
        contacts: "09179878564"
    },
    {
        id: 2,
        name: "Orval McLaughlin",
        email: "okoch@example.org",
        contacts: "09083692343",
    }
]
let autoComplete = data.map((user) => {
    return { [user.id] : user.name};
});

console.log(autoComplete)

EDIT:

Если вам нужен объект вместо массива, вы должны использовать reduce(), потому что map() всегда возвращает массив:

let data = [
    {
        id: 3,
        name: "Oliver Green",
        email: "test@gmail.com",
        contacts: "09179878564"
    },
    {
        id: 2,
        name: "Orval McLaughlin",
        email: "okoch@example.org",
        contacts: "09083692343",
    }
]
let autoComplete = data.reduce((obj, user) =>{
    obj[user.id] = user.name; // this assumes user.id will be unique
    return obj
}, {});

console.log(autoComplete)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...