如何修复我的函数试图在javascript

时间:2018-04-25 20:32:47

标签: javascript arrays

对不起这个菜鸟问题,但我无法让我的功能发挥作用。对我而言,它看起来非常类似于网络上的解决方案,但不知何故它不起作用,我不知道问题出在哪里。将不胜感激任何帮助

function findvalue() {
  var i = 0;
  var array = [];
  var min = array[0];
  for (i = 0; i < array.length; i++) {
    if (min > array[i]) {
      min = array[i];
    }
  }
  return min;
}
console.log(findvalue(11, 12, 13, 21, 22, 23, 97, 98, 99))

;

7 个答案:

答案 0 :(得分:3)

您可以使用arguments,这是一个类似于函数对象的数组。

function findvalue() {
    var i = 0,
        min = arguments[0];

    for (i = 1; i < arguments.length; i++) {
        if (min > arguments[i]) {
            min = arguments[i];
        }
    }
    return min;
}
console.log(findvalue(11, 12, 13, 21, 22, 23, 97, 98, 99));

较短的方法可能是使用rest parameters ...spread syntax ...作为Math.min的值。

function findvalue(...args) {
    return Math.min(...args)
}
console.log(findvalue(11, 12, 13, 21, 22, 23, 97, 98, 99));

答案 1 :(得分:2)

您的功能定义不正确,以及您如何调用您的功能。

您希望迭代一个数组,但是您使用一堆数字作为参数调用您的函数。你需要1个参数(参数)来调用你的函数,它应该是一个数组。

你必须改为这样称呼它:

findvalue([11, 12, 13, 21, 22, 23, 97, 98, 99])

您的功能定义必须是:

function findvalue(array) {
  var i = 0;
  var min = array[0];
  for (i = 1; i < array.length; i++) {
    if (min > array[i]) {
      min = array[i];
    }
  }
  return min;
}

如评论中所述,您可以修改函数定义以保留调用函数的初始方法。这是通过使用rest parameters

完成的

MDN文档将休息参数描述为:

  

其余参数语法允许我们表示不确定的数字   作为数组的参数。

按照您的方式调用该函数:findvalue(11, 12, 13, 21, 22, 23, 97, 98, 99)

您的功能定义是:

function findvalue(...array) {
      var i = 0;
      var min = array[0];
      for (i = 1; i < array.length; i++) {
        if (min > array[i]) {
          min = array[i];
        }
      }
      return min;
    }

答案 2 :(得分:1)

您可以使用Math.min

function findMin() {
   // arguments is an Array-like object corresponding to the arguments passed to a function. 
   return Math.min.apply(Math, arguments)
}

console.log(findMin(2,4,1,0,9,-2));

答案 3 :(得分:0)

函数中缺少的是数组必须是函数的参数。

在你写的时候,函数总是试图在空数组中找到最小值。

目前完全忽略了调用函数时传递的示例值。

因此,不是在函数体中编写var array = [],而是有几种可能性:

第一种可能性:将数组作为参数:将您的函数声明为function(array)并将您的调用更改为实际传递一组值findValues([11, 12, 13, 21 ...]),并删除正文中的var array = []你的功能。

第二种可能性(我最喜欢的):只需将var array = []替换为var array = [...arguments]

此处arguments对象的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

(另请注意,let现在是最佳做法而不是var

使用arguments

查看Nina对完整代码段示例的回答

答案 4 :(得分:0)

试试这个

function findvalue() {
	var order = Array.from(arguments).sort(function(a,b){ return a - b; });
	var min = order[0];
	//var max = order[order.length-1];
	return min;
}
// MIN value
console.log(findvalue(23, 97, 98, 99, 11, 12, 13, 21, 22));

答案 5 :(得分:0)

我相信箭头功能会简化您的工作。

    //Variable diclaration
    var numbers = [11, 12, 13, 21, 22, 23, 97, 98, 99];

    //Arrow Function to find Min Number
    var minfinder = numbers.reduce((a, b) => Math.min(a, b));

    //Consloe Output
    console.log("Min Number is: " + minfinder);

答案 6 :(得分:-2)

您将参数传递给不使用它们的函数 尝试像

这样的东西
function min(foo[ ]){
    //Rest of the function
}

并称之为

min([1,2,3,4]);