跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 想看大家做这道题的答案
未分類
14 3 月 2021

想看大家做这道题的答案

想看大家做这道题的答案

資深大佬 : frankkai 4

想看大家做这道题的答案
用 JavaScript 实现一个 add(1,2,3)(4)(5)(6,7)(8)()

返回结果为这些数字的和:36 。

大佬有話說 (10)

  • 資深大佬 : powerfulyang

    柯里化

  • 資深大佬 : imdong

    function add() {
    let nums = Array.from(_args);

    return function () {
    nums = nums.concat(Array.from(_args));

    if (arguments.length <= 0) {
    return nums.reduce(function (prev, cur) {
    return prev + cur;
    }, 0);
    }

    return arguments.callee;
    };
    }

    add(1, 2, 3)(4)(5)(6, 7)(8)()

  • 資深大佬 : imdong

    呃,变量名忘记改了,_args 应改为 arguments

    正确代码应该是:

    function add() {
    let nums = Array.from(arguments);

    return function () {
    nums = nums.concat(Array.from(arguments));

    if (arguments.length <= 0) {
    return nums.reduce(function (prev, cur) {
    return prev + cur;
    }, 0);
    }

    return arguments.callee;
    };
    }

    add(1, 2, 3)(4)(5)(6, 7)(8)()

  • 資深大佬 : Elethom

    Ramda 不香吗。

    https://gist.github.com/Elethom/185f504e268b9b77f7c2280a5540d453

  • 主 資深大佬 : frankkai

    @imdong 不错

  • 資深大佬 : enchilada2020

    优化了下 #3 的代码 有错请轻喷。。
    “`JavaScript
    const infiniteAdd = function () {
    const args = […arguments];
    return function f() {
    if (!arguments.length) return args.reduce((acc, cur) => acc + cur, 0);
    args.push(…arguments);
    return f;
    }
    };

    console.log(infiniteAdd(1, 2, 3)(4, 5)(6)(7, 8, 9, 10)(11, 12)()); // 78
    “`

  • 資深大佬 : IsaacYoung

    function curry(fn) {
    let p = [];
    const wrapper = function (…args) {
    if(args.length) {
    p = p.concat(args);
    return wrapper
    } else {
    return fn(…p)
    }
    }
    return wrapper
    }
    function addOriginal (…args) {
    return args.reduce((prev, curr) => prev + curr, 0)
    }

    const add = curry(addOriginal)

  • 資深大佬 : muxw6

    function add(…args) {
    return function(…_args) {
    return _args.length>0 ? add(…args, …_args) : args.reduce((a, c) => a + c)
    }
    }

  • 主 資深大佬 : frankkai

    @muxw6 很精简啊

  • 資深大佬 : iMusic

    以前见过类似的题
    “`
    sum(2)(3) 和 sum(2, 3)
    “`

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具