首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS中具有参数传递的函数

JS中具有参数传递的函数
EN

Stack Overflow用户
提问于 2016-06-06 09:01:30
回答 4查看 107关注 0票数 4

这是工作中的测试任务。

农夫养兔子。每只兔子都有自己的重量。当时机来临时,他杀死了他们的函数cut(rabbit)。你必须写一个函数的切割,使它有cut(rabbit1)(rabbit2)...(rabbitN)的外观,并推导出总质量和兔子的数目。

例如:

代码语言:javascript
复制
var rabbit1 = {weight: 5},
    rabbit2 = {weight: 4};

console.log(cut(rabbit1)(rabbit2));

在控制台里,我们将看到"9公斤的兔子或2片“。

JSFiddle - https://jsfiddle.net/sjao7ut8/

如何编写函数cut()

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-06-06 09:16:34

您可以使用链接,这是一个fluent接口,它返回您调用的函数,直到环境需要一个原始值为止。

代码语言:javascript
复制
function cut(rabbit) {
    var weight = 0,
        count = 0,
        fn = function (o) {
            weight += o.weight;
            count++;
            return fn;
        };

    fn.toString = function () {
        return weight + ' kg of rabbits or ' + count + ' piece' + (count > 1 ? 's' : '');
    }

    return fn(rabbit);
}

var rabbit1 = { weight: 5 },
    rabbit2 = { weight: 4 };
    
console.log(cut(rabbit1)(rabbit2));

票数 7
EN

Stack Overflow用户

发布于 2016-06-06 09:10:48

这里您需要做的是使用递归调用,它返回一个函数并使用arguments.callee

像这样的事情应该能做好:

代码语言:javascript
复制
function cut(firstRabbit) {
    var mass = firstRabbit.weight;
    return function(nextRabbit) {
        if (typeof nextRabbit !== 'undefined') {
            mass += nextRabbit.weight;
            return arguments.callee;
        } else {
            return mass;
        }
    };
}

示例用法(请记住在末尾添加() ):

代码语言:javascript
复制
var rabbit1 = {weight: 5},
rabbit2 = {weight: 4};

console.log(cut(rabbit1)(rabbit2)());
票数 0
EN

Stack Overflow用户

发布于 2016-06-06 10:55:08

您可以尝试使用以下代码:

代码语言:javascript
复制
var farmer = { 
    cut: function(rabits) { 
    var cutWeight = 10;
    var totalCuts = 0;
    var totalWeight = 0;
    var count = rabits.length;

    for(var i=0; i < count; i++) {
        var rabit = rabits[i];

      if(rabit.weight >= cutWeight) {
        totalWeight += rabit.weight;
        if(totalCuts === 0) {
            totalCuts = 1;
        }
        else {
            totalCuts += 1;
        }
      }
    }

    console.log(totalWeight + "Kg of Rabits and " + totalCuts + "cuts.")
  }
};

farmer.cut([{weight: 11}, {weight: 5}, {weight: 13}]); // Call the function

希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37653354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档