【问题标题】:How do you return an object from a function?如何从函数返回对象?
【发布时间】:2015-12-15 04:12:05
【问题描述】:

我正在学习 JS,非常感谢您的帮助。如果可能的话,我想给我们更高阶的函数和回调。

任务

  1. 声明这些局部变量并使它们等于相应的信息,firstName、LastName、linkedIn、phone、city
  2. 使用字符串连接,使局部变量 fullName 等于您的名字和姓氏,并用空格分隔。
  3. 创建一个局部变量 linkedIn,它是一个字符串,它是您的 LinkedIn 个人资料的链接。
  4. 创建一个局部变量 info,它是一个数组,其中包含您的 fullNamelinkedInphone 和 city 变量,按此顺序。
  5. 创建一个局部变量education,它是一个数组,其中包含您的学院/大学名称、研究领域、一个整数,即您(预期)毕业的年份。确保它的顺序。
  6. 定义一个函数 createApp,它按顺序将您的信息和教育作为参数。这应该返回一个包含 2 个键的对象。键名必须与您的变量名相同。将这些键的值设置为相应的参数。

步骤 1-5: 创建局部变量。

 (function person() {
   var firstName = "Rob",
   lastName = "Johnson",
   fullName = firstName + ", " + lastName,
   linkedIn = 'https://www.linkedin.com/in/robjohnson',
   phone = 3105559288,
   city = 'Los Angeles',
   info = [firstName, linkedIn, phone, city],
   education = ['UWRock','Generals','2017'];
 })();

第 6 步。 返回一个包含 2 个键的对象。键名必须与您的变量名相同。将这些键的值设置为相应的参数。我不知道,我认为这应该是动态的而不是硬编码的。

function createApp(info, education){
   var myObj = {}; 
   return(myObj);
};

我想我应该使用回调返回类似的东西:

myObj {
  info:'Rob', 
  education: ['UWRock','Generals','2017']
};

【问题讨论】:

  • 你能写下你的例子的代码吗? var resultObject = {... ?不清楚你想达到什么目标
  • @Trike,我更新了问题并给出了例子。

标签: javascript


【解决方案1】:

假设你有以下功能

var GraphicalFilters = (function() {
    var SelectedFilters = {};     
    return {
        initializaAllFilters: function(value1,value2) {
                    SelectedFilters = {};
                    SelectedFilters.value1 = value1;
                    SelectedFilters.value2 = value2;
        },
        getAllFilters: function() {
            return SelectedFilters;
        }
    };
})();

您可以通过以下方式获取对象:

GraphicalFilters.initializaAllFilters(1,2);
var $filters = GraphicalFilters.getAllFilters();

【讨论】:

  • 这可行,但它不遵循挑战的指导方针。我必须首先创建一个带有两个参数的函数。不过谢谢!
【解决方案2】:

我找到了解决办法。

function list () { 
  var firstName = "Rob",
      lastName = "Johnson",
      fullName = firstName + ", " + lastName,
      linkedIn = 'https://www.linkedin.com/in/robjohnson',
      phone = 3105559288,
      city = 'Los Angeles',
      info = [firstName, linkedIn, phone, city],
      education = ['UWRock','Generals','2017'];

  createApp(info,education);

}

function createApp(info, education){
  var emptyObj = {},
      strArr = ['info','education'],
      myArray = [info, education];

      for (var i = 0; i < myArray.length; i++){
        emptyObj[strArr[i]] = myArray[i];
      }

   console.log(emptyObj);

}

list();

结果是

[ Object ] {
 education: ["UWRock", "Generals", "2017"],
 info: ["Rob", "https://www.linkedin.com/in/robjohnson", 3105559288,"Los Angeles"]
}

不过,我正在努力寻找更好的方法。

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2019-10-13
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多