相关疑难解决方法(0)

"添加"功能,适用于链接/参数的不同组合

我正在尝试编写一个可在许多场景下工作的添加功能.

add(2,2,2) //6
add(2,2,2,2) //8
add(2)(2)(2) // 6
add(2)(2)(2,2).value() //8
add(2,2)(2) + 2 //8
add(2).add(2) //4
add(2,2,2).add(2).add(2,2).value() //12
add(2,2,2).add(2).value() //8
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

function add(){
    var sum = 0;
    for( var i in arguments ){
        sum += arguments[i];
    }

    var ret = add.bind(null, sum);

    ret.value = function () {
      return sum;
    }

    ret.add = function () {
      for( var i in arguments ){
        sum += arguments[i];
      }
      return sum;
    }

    ret.valueOf = function(){ return sum; };
    
    return ret;
}

console.log(add(2,2,2));
console.log(add(2,2,2,2));
console.log(add(2)(2)(2)); …
Run Code Online (Sandbox Code Playgroud)

javascript

16
推荐指数
2
解决办法
2743
查看次数

如何在javascript函数调用中实现任意链?

我已经编写了代码来实现

sum(1)(2) //3
Run Code Online (Sandbox Code Playgroud)

代码如下:

function sum(a) {

  return function(b) { 
    return a+b
 }

}
Run Code Online (Sandbox Code Playgroud)

但我没有解决第二个问题,即如何实现任意数量的链函数调用:

sum(1)(2) == 3
sum(5)(-1)(2) == 6
sum(6)(-1)(-2)(-3) == 0
sum(0)(1)(2)(3)(4)(5) == 15
Run Code Online (Sandbox Code Playgroud)

javascript chaining

7
推荐指数
1
解决办法
1378
查看次数

使用动态参数进行递归

这是一个我尚未弄清楚的面试问题.考虑以下:

function recurse(a) {
    return function(b) {
        console.log(a + b);
    }
}

//This will log '5' in the console
recurse(2)(3);
Run Code Online (Sandbox Code Playgroud)

现在我被要求编写一个函数,该函数将采用n多个参数并通过记录参数值的最终总和以相同的方式工作.含义:

//This should log '13'
recurse(2)(3)(1)(7)
Run Code Online (Sandbox Code Playgroud)

如何编写这样的函数?我已经尝试过在递归,动态参数等方面进行思考.但是还没有能够记下任何具体的东西.

javascript recursion

7
推荐指数
2
解决办法
270
查看次数

动态currying,以及如何在JavaScript变量中保存函数和值

我正在学习JavaScript,最近我遇到了一个练习题,要求我构建一个可以创建输出的函数,如下所示:

var threeSum= sum(3);
threeSum //3
threeSum(4) //7
threeSum(4)(3) //10
threeSum(4)(3)(7) //17
threeSum(4)(3)(7)()(2) //19
threeSum - 2 //1
threeSum + 2 //5
Run Code Online (Sandbox Code Playgroud)

我认为涉及到currying,我认为我已经基本掌握了curry如何以简单的形式工作

a=>b=>c=> a+b+c
Run Code Online (Sandbox Code Playgroud)

但我不知道如何创建一个能够处理不确定数量的输入的curried函数,也不知道如何使它成为一个可以作为值和函数的变量.

任何见解都表示赞赏!我只需要朝着正确的方向努力 - 此时我甚至不知道我在寻找什么.

javascript currying

6
推荐指数
1
解决办法
627
查看次数

如何使函数 add 在 javascript 中工作 - console.log(add(2)(3)(4)) //9 不使用 valueof 或 toString

javascript问题添加无限数字,末尾没有空括号

我试过这个:

const Sum = function (a) {
        function innerFunc (b) {
            console.log("B", b)
            return b ? Sum(a + b) : a;
        }
    }
  console.log(Sum(2)(3)(4))
Run Code Online (Sandbox Code Playgroud)

但它适用于 console.log(Sum(2)(3)(4)()) 即最后一个空括号,有没有办法通过更改函数来做到这一点,以便没有空括号的控制台日志给出正确的结果结果,目前它抛出一个错误,指出 Sum 不是函数

javascript recursion currying

2
推荐指数
1
解决办法
136
查看次数

Javascript:如何返回多组输入的函数总和

我有这个函数,需要能够接受多组输入并返回每个输入的总和。例如:

magicFunction(1)(2)(3) => 6
Run Code Online (Sandbox Code Playgroud)

我用下面的代码完成了这一点。“f(y)”将一直运行,直到没有剩余的输入集。

function magicFunction(x) {
  var sum = x;  

  function f(y) { 
    sum += y;
    return f;
  };  
  return f;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望函数返回总和,但该函数最后将返回“[Function: f]”。目前,该函数执行以下操作:

magicFunction(1)(2)(3) => [Function: f]
Run Code Online (Sandbox Code Playgroud)

我不知道如何在最后一次输入后返回总和。有没有办法检查代码是否到达最后一个输入集?因此,我可以运行“return sum”,而不是“return f”。

我考虑添加一个“toString”方法,然后使用“console.log”输出结果。但我正在寻找返回值的函数,而不仅仅是将值输出到控制台。

javascript closures input

1
推荐指数
1
解决办法
2202
查看次数

为什么这个函数返回一个字符串而不是总和?

function sum(a){
    if(!a) return 0;
    return b=>a + sum(b);
}


console.log(sum(2)(3)); // returns a string "ab=&gta + sum(b)"
console.log(sum(2)(3)()); // says sum (..)(..) is not a function
Run Code Online (Sandbox Code Playgroud)

发生这种情况有什么特别的原因吗?

javascript closures

1
推荐指数
1
解决办法
53
查看次数

在JavaScript中关闭 - 什么是错的?

我尝试使用闭包进行下一步:

function func(number) {
    var result = number;

    var res = function(num) {
        return result + num;
    };
    return res;
}

var result = func(2)(3)(4)(5)(3);
console.log(result); // 17
Run Code Online (Sandbox Code Playgroud)

我需要收到2 + 3 + 4 + 5 + 3 = 17但我收到一个错误:未捕获TypeError:数字不是函数

javascript closures

0
推荐指数
2
解决办法
526
查看次数

javascript中的尾部函数

我想创建一个添加参数的函数.应该调用这个函数

functionAdd(2)(3)(4)...(n);
Run Code Online (Sandbox Code Playgroud)

结果2 + 3 + 4 ... + n我正在尝试这个

function myfunction(num){
  var summ =+ num;
  if(num !== undefined){
    return myfunction(summ);
  }

};
Run Code Online (Sandbox Code Playgroud)

但它不起作用,ovwerflow的错误.而且我不明白我应该从这个功能中找到什么;

javascript recursion tail-recursion

0
推荐指数
1
解决办法
575
查看次数

如何使 `foo[1] ==1; foo[1][2]==3; foo[1][2][3]==6` 在 JavaScript 中工作吗?

如何定义foo以使以下代码按预期正确工作(在 JavaScript 中)?

foo[1] + 1             // 2
foo[1][2] + 1          // 4
foo[10][20][30] + 1    // 61
foo[100][200][300] + 1 // 601
Run Code Online (Sandbox Code Playgroud)

这是我曾经遇到过的一个面试题。

javascript es6-proxy

-4
推荐指数
1
解决办法
63
查看次数