【问题标题】:I am trying to create a function and I don't know how many inputs it will require, whats the best way to account for this? [duplicate]我正在尝试创建一个函数,但我不知道它需要多少输入,最好的方法是什么? [复制]
【发布时间】:2021-06-03 15:38:20
【问题描述】:
function totalLength(thk, dim) {
    var bendDeduction = 1.55 * thk;
    var lengthMinusBend = dim - bendDeduction;
    return lengthMinusBend;
} 

这是我现在拥有的简化版本。基本上,我希望能够为昏暗输入输入几个值。目前,我正在计算函数之外的“dim”输入。我遇到的问题是我无法找到一种方法来提供这样一个事实,即我需要添加的值的数量来创建由“dim”输入表示的总和会有所不同。

此外,这目前仅适用于一个弯曲。我希望能够从每个新输入中减去“bendDeduction”。

我对所有这些都是全新的,我正在努力解决所有这些问题。我正在考虑某种类型的数组和一个 for 循环,但我对这一切都很陌生,我无法弄清楚它的确切编写方式。感谢您的帮助。

【问题讨论】:

标签: javascript arrays function loops


【解决方案1】:

对第二个参数使用“数组”:

function totalLength(thk, ...dim )
  {
  let bendDeduction   = 1.55 * thk * dim.length
 
  return dim.reduce((t,d)=>t+d) - bendDeduction;
} 



console.log ( totalLength( 100, 200) )

console.log ( totalLength( 100, 200, 300) )

【讨论】:

    【解决方案2】:

    首先,声明一个计算数组和的辅助函数

    然后你可以使用Rest Parameters 使函数接受可变数量的参数

    function sumArray(arr) {
        var res = 0;
        for (var i = 0; i < arr.length; i++) {
            res += arr[i];
        }
        return res;
    }
    
    function totalLength(thk, ...dim) {
        var bendDeduction = 1.55 * thk;
        var dimSum = sumArray(dim);
        var lengthMinusBend = dimSum - bendDeduction;
        return lengthMinusBend;
    } 
    
    console.log(totalLength(100, 80, 60, 20));

    【讨论】:

    • 我不应该在总和的计算中包括厚度。我已经搞砸了一段时间,我不知道如何排除它。我很困惑 sumArray 如何计算值的总和。我真正想要的是只计算 ...dim 输入,而不是 thk
    • 没关系,我想通了。我需要数组从 0 开始,而不是 1,所以我将 i 更改为 0,它可以按我的意愿工作。我不知道如何或何时将其切换为 1,但是当我尝试执行代码时,我把它搞砸了。我还必须考虑到要减去的弯曲总数是数组中的总数 - 2,我一定在那个步骤中弄乱了它。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2012-02-08
    • 2021-11-08
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多