【问题标题】:JavaScript – Modularize for-loop of a methodJavaScript – 模块化方法的 for 循环
【发布时间】:2021-12-27 17:47:26
【问题描述】:
I have a function like this:

function makeSummary(people){
    const myList = []
    for (int i = 0; i < people.length; i++){
          myList.push({
            fullName: person.firstName + " " + person.lastName,
            title: person.title,
          })
    }
    return myList
}

给定一个人员列表,构造一个稍微修改过的列表版本。

有什么方法可以将在 for 循环的任何步骤中构造的对象作为参数传递?

我想模块化这个函数以便进一步重用(这只是一个例子,我的真实代码要大得多,所以在那里更有意义,但场景是一样的)。

所以,我希望有一个参数,我传递类似的东西:

{
     fullName: person.firstName + " " + person.lastName,
     title: person.title,
}

对于下一个函数调用,我可以通过:

{
     fullName: person.firstName + " " + person.lastName,
     description: person.description,
}

并且该方法应该知道这是应该在 for 循环中的每一步添加的对象。

有什么办法可以做到吗?

谢谢!

【问题讨论】:

  • 进一步模块化是什么意思?究竟要做什么?
  • @charlietfl 以这样的方式修改函数,以便我可以传递类似于我作为参数呈现的对象的内容,因此该函数可以使用它,而不必在以下情况下对对象的构造进行硬编码将它们推到列表中。这更有意义吗?
  • 您可以简单地将您的对象构建代码移动到辅助函数中并将其作为参数传递给makeSummary(people, helper),现在您可以根据需要传递辅助函数
  • 并非如此。您要解决的更高级别的问题是什么?您可能正在寻找的是一个类,您可以将人员对象传递到该类中并返回一个新实例该类将为全名和您可能需要的任何其他方法提供一个 getter 或)setter
  • @charlietfl 我的真实代码中的 makeSummary 方法要大得多,但除了返回的对象外,它始终以相同的方式工作,因此键和值会有所不同。所以为了解决这个问题,我将 makeSummary 方法复制粘贴到整个代码中并更改了对象,但现在我想找到一种更模块化的方法,而不需要太多重复。

标签: javascript arrays vue.js


【解决方案1】:

您可以简单地从 makeSummary 函数中移动对象的硬编码,而不是将其作为参数传递。这将使您可以根据需要灵活地定义辅助函数。

function makeSummary(people, helper){
    const myList = []
    for (int i = 0; i < people.length; i++){
          myList.push(helper(people[i])
    }
    return myList
}


function helper1(person){
  return {
      fullName: person.firstName + " " + person.lastName,
      title: person.title,
  }
}

function helper2(person){
  return {
      fullName: person.firstName + " " + person.lastName,
      description: person.description,
  }
}

//call it like this
makeSummary(people, helper1)
makeSummary(people, helper2)

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2022-01-26
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多