Javascript 循环传递给方法的参数

Javascript 循环传递给方法的参数,javascript,arrays,class,ecmascript-6,Javascript,Arrays,Class,Ecmascript 6,我试图循环通过一个传递给方法的参数,得到一个类型错误:individualExpenses.map不是一个函数。我做错了什么 class ExpenseTracker { constructor(payCheck, monthlyExpenses) { this.payCheck = payCheck; this.monthlyExpenses = monthlyExpenses; } storeExpenses(individualExpenses) {

我试图循环通过一个传递给方法的参数,得到一个
类型错误:individualExpenses.map不是一个函数
。我做错了什么

class ExpenseTracker {
  constructor(payCheck, monthlyExpenses) {
    this.payCheck = payCheck;
    this.monthlyExpenses = monthlyExpenses;
  }

  storeExpenses(individualExpenses) {
    let expenseStore = [];
    individualExpenses.map(expense => {
      expenseStore.push(expense)
    })
    console.log(expenseStore)
  }
}

const v = new ExpenseTracker({}, {});
v.storeExpenses(1)

您正在将一个数值传递给
storeExpenses
函数,并在其上应用
map
<代码>映射仅适用于阵列。如果你这样做

v.storeExpenses([1]);
它会很好用的

或者,您可以构建逻辑,将非数组类型转换为数组,并在
storeExpenses
函数中使用它。通过这种方式,您可以执行
v.storeExpenses(1)
v.storeExpenses([1])
中的任何一种操作,该功能仍将工作

e、 g

然后修改您的
storeExpenses
方法,如下所示-

storeExpenses(individualExpenses) {
    let expenseStore = [];
    wrapToArray(individualExpenses).map(expense => {
      expenseStore.push(expense)
    })
    console.log(expenseStore)
  }

必须在数组上调用。您正在向函数传递一个数字,而该数字正是您试图调用的
.map()
。您没有向
storeExpenses
传递数组。您必须传递一个数组,您可以更改为
v.storeExpenses([1])
。噢,是的,谢谢@scottmarcursif,正如标题所示,您的真正意图是允许传递任意数量的参数,并
将它们全部推到
expenseStore
,你应该用
…individualExpenses
替换论点
individualExpenses
。是的,谢谢@Krantisinh,ScottMarcus首先回答了这个问题,所以批准这个作为最终答案是不公平的。没关系:)@boomcchickawawa没关系,谢谢。我没有写“答案”,所以你可以把这个标记为“它”。@Krantisinh这很好,但它只有在将spread运算符用于storeExpenses参数时才有效,否则它总是返回第一个元素passed@boomchickawawa我想它在没有spread操作符的情况下也能工作。在控制台中测试它,似乎对
storeExpenses(1)
以及
storeExpenses([1,2,3,4])
storeExpenses(individualExpenses) {
    let expenseStore = [];
    wrapToArray(individualExpenses).map(expense => {
      expenseStore.push(expense)
    })
    console.log(expenseStore)
  }