如何运行此脚本返回所需的最小值和总和值

时间:2014-03-18 10:19:23

标签: javascript function

以下是JSFiddle

的链接
var num = prompt("Enter numbers seperated by spaces");
num = [];
var max = function (num) {
    var largest = num[0];
    for (var i = 1; i < num.length; i += 1) {
        if (num[i] > largest) {
            largest = num[i];
        }
    }
    return largest;
};
var min = function (num) {
    var smallest = num[0];
    for (var i = 1; i > num.length; i -= 1) {
        if (num[i] > smallest) {
            smallest = num[i];
        }
    }
    return smallest;
};
var sum = function (num) {
};
return("Minimum is " + min + ", Maximum is " + max + ", Sum is " + sum + ".");
alert(return);

我需要脚本来返回return()

中句子中的数值

3 个答案:

答案 0 :(得分:1)

首先,您正在从提示中读取并将该变量初始化为新数组。下面的行。所以你没有留下任何数值

var num = prompt("Enter numbers seperated by spaces");
num = [];

其次,你得到SyntaxError: Unexpected token return,因为你以错误的方式使用了回报。通过搜索了解返回。

第三,你没有正确地调用方法min,max和sum。

示例代码如下所示,

var num1 = prompt("Enter numbers seperated by spaces");
var num = num1.split(' ');
console.log(typeof (num));

var max = function (num) {
    var largest = num[0];
    for (var i = 1; i < num.length; i += 1) {
        if (num[i] > largest) {
            largest = num[i];
        }
    }
    return largest;
};
var min = function (num) {
    var smallest = num[0];
    for (var i = 1; i > num.length; i -= 1) {
        if (num[i] > smallest) {
            smallest = num[i];
        }
    }
    return smallest;
};
var sum = function (num) {
};
alert("Minimum is " + min(num) + ", Maximum is " + max(num) + ", Sum is " + sum(num) + ".");

编辑: 用以下代替总和。添加return语句可以解决未定义的问题。

var sum = function (num) {
     var s = 0;
     for (var i = 0; i < num.length; i++) {
        s = s + parseInt(num[i], 10);
     }
     return s;
};

答案 1 :(得分:1)

正如@JJPA已经提到的,您的代码存在多个问题。如果你想让它工作,你必须修复它们。

但是,如果您想学习新的方法,这可以使您的任务更容易和更短,您可以看看这个替代解决方案:

function worker(str) {
    var numbers = str.split(/\s+/).map(Number),
        max = Math.max.apply(this, numbers),
        min = Math.min.apply(this, numbers),
        sum = numbers.reduce(function(a, b) { return a + b });

    return 'Minimum is ' + min + ', Maximum is ' + max + ', Sum is ' + sum + '.';
}

alert( worker(prompt()) );

它完全符合您的要求,但在这里您可以使用JavaScript数组和数学方法的所有功能。

答案 2 :(得分:0)

return返回函数的值。这里的一个解决方案是获取用户输入,在调用函数时将其添加为参数,并使该函数的结果返回所需的信息。这是你的代码被重写以使用JS允许的简写版本:

var num = prompt("Enter numbers separated by spaces");

function getValues(num) {

  // split the user input into an array
  // and convert the string values to integers
  var arr = num.split(' ').map(Number);

  // Use the Math functions to get the max and min values from the array
  var max = Math.max.apply(null, arr);
  var min = Math.min.apply(null, arr);

  // Reduce allows you to grab the sum of the values
  var sum = arr.reduce(function (p, c) { return p + c; });

  // return an object with all the values attached
  return { max: max, min: min, sum: sum };
}

// get the result by passing in num
var result = getValues(num);

console.log(result); //  { max=66, min=1, sum=79 }
console.log(result.max) // 66
console.log(result.min) // 1
console.log(result.sum) // 79

希望它有一些用处。

<强> Demo