Передача объекта в качестве переменной - PullRequest
0 голосов
/ 27 августа 2018

Я получил массив (см. Ниже для одного объекта в массиве). Я хотел бы получить доступ к объекту через переменную, которую я передам. Не могли бы вы объяснить, почему переменная whatType не работает?

 const myfunction = (whatType) => {
    var mylist = {
        bio: null,
        email:  "user@domain.com",
        firstname: "Anna",
        id: 318,
        lastAvatar: null,
        lastMessage: null,
        lastname: "Nickson",
        nickname: "anny"
     };
      console.log (mylist.whatType)
    }

firstfunction () {
    const passthis = 'bio';
    myfunction (passthis);
};

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

если вы хотите получить доступ к whatType из mylist, вам нужно добавить его в mylist как свойство.

const myfunction = (whatType) => {
  var mylist = {
    bio: null,
    email: "user@domain.com",
    firstname: "Anna",
    id: 318,
    lastAvatar: null,
    lastMessage: null,
    lastname: "Nickson",
    nickname: "anny",
    whatType
  };
  console.log(mylist.whatType)
}


const passthis = 'bio';
myfunction(passthis);

если ваша цель - запросить объект на основе имени свойства переменной, вы можете использовать скобки:

const myfunction = (whatType) => {
  var mylist = {
    bio: null,
    email: "user@domain.com",
    firstname: "Anna",
    id: 318,
    lastAvatar: null,
    lastMessage: null,
    lastname: "Nickson",
    nickname: "anny",
    whatType
  };
  console.log(mylist[whatType])
}

const passthis = 'bio';
myfunction(passthis);
0 голосов
/ 27 августа 2018
const myfunction = (whatType) => {
var mylist = {};
    mylist[whatType] = {
        bio: null,
        email:  "user@domain.com",
        firstname: "Anna",
        id: 318,
        lastAvatar: null,
        lastMessage: null,
        lastname: "Nickson",
        nickname: "anny"
     };
      console.log (mylist[whatType])
    }

firstfunction () {
    const passthis = 'bio';
    myfunction (passthis);
};
0 голосов
/ 27 августа 2018

Вы хотите заменить console.log (mylist.whatType) на console.log (mylist[whatType])

Потому что

mylist.bio === mylist['bio']

И если bio является строкой в ​​переменной whatType, вы должны использовать:

mylist[whatType] для замены на mylist["bio"] (это то же самое, что mylist.bio)

Ваша функция будет (с лучшими именами)

const getUserField = (attr) => {
    var user = {
        bio: null,
        email:  "user@domain.com",
        firstname: "Anna",
        id: 318,
        lastAvatar: null,
        lastMessage: null,
        lastname: "Nickson",
        nickname: "anny"
    }
    return user[attr]
}

firstfunction () {
    const attr = 'bio';
    console.log("User value for " + attr + ":", getUserField (attr))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...