如何在数组中找到最大的一组数字并分别用javascript返回?

时间:2018-12-13 23:46:11

标签: javascript arrays function loops

如何制作仅返回大于输入数字的数字的函数? 我的代码在这里不起作用,我也不知道为什么。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var num = Number(prompt('number'));

function findBiggestNumbers(num) {
   for (var i = 0; i < arr.length; i++) {
      if (arr[i] > num) {
         num = arr[i];
      }
   }
   return num;
// }
console.log(findBiggestNumbers(num));

4 个答案:

答案 0 :(得分:4)

要使用数组,您可以使用filter函数,它会返回带有某些条件的数组子集。因此,您可以轻松做到:

var num = 5; //using 5 as an example

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var b = a.filter(number => number > num);

您可以将其放入函数中。

答案 1 :(得分:1)

您需要创建一个新的空数组,并用大于输入值的数字填充它。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var num = Number(prompt('number'));

function FindBiggestNumbers(num) {
  let biggerThanArray = [];

  for (var i = 0; i < arr.length; i++) {
    if (arr[i] > num) {
      biggerThanArray.push(arr[i]);
    }
  }
  return biggerThanArray;
}

console.log(FindBiggestNumbers(num));

答案 2 :(得分:1)

您可以使用Array.prototype.filter()

function FindBiggestNumbers(num) {
  return arr.filter(n => n > num);
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var number = Number(prompt("Enter a number"));
console.log(FindBiggestNumbers(number));

另一种选择是在if循环内使用嵌套的for语句,如下所示:

首先创建一个新数组:

function FindBiggestNumbers(num) {
    var newArr = [];
}

然后遍历原始数组:

function FindBiggestNumbers(num) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {

    }
}

如果发现数组中的元素大于数字,则将其添加到新数组中:

function FindBiggestNumbers(num) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > num) {
            newArr.push(arr[i]);
        }
    }
}

最后,返回新数组:

function FindBiggestNumbers(num) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > num) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

演示:

function FindBiggestNumbers(num) {
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] > num) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var number = Number(prompt("Enter a number"));
console.log(FindBiggestNumbers(number));

答案 3 :(得分:1)

您可以开始理解和使用功能性JS做一些有趣的事情。

类似于Daladier Sampaio的回答,我使用filter返回一个数组,其中每个元素在回调函数中传递一个条件(el> num)。 ({5}中引入了filterreducemap,它们是非常有用的数组方法,非常值得学习使用。)

在此示例中,我传入了-并称为-而是一个名为greaterThan的整个函数。

greaterThan

1)接受一个参数-n,在这种情况下是提示符下的数字

2)返回一个数组-将对每个数组元素进行操作的回调函数。此函数的有趣之处在于,它在返回时带有num的副本。像这样的保留了外部词法环境的副本的函数称为closure。了解它们是什么以及它们如何工作是一项有用的JS技能,并且是JS访谈中经常提到的一项技能。

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const num = Number(prompt('number'));

// accepts a number and returns a callback function
// that accepts an array element and
// tests it against the value of `n`
function greaterThan(n) {
  return function (el) {
    return el > n;
  };
}

// calling greater than with our prompted number
// returns that new callback function that checks each
// array element
const out = arr.filter(greaterThan(num));
console.log(out);

现代JS> = ES6将使您能够精简使用箭头功能必须编写的代码量。下面的单行代码将代替示例中的函数:

const greaterThan = n  => el => el > n;