Как найти наибольшую группу чисел в массиве и вернуть их отдельно в javascript? - PullRequest
0 голосов
/ 14 декабря 2018

Как я могу сделать функцию, которая возвращает только числа, которые больше введенного мной числа?Мой код здесь не работает, и я не знаю почему.

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 голосов
/ 14 декабря 2018

Вы можете начать понимать и делать забавные вещи с функциональным JS.

Подобно ответу Даладье Сампайо, который я использовал filter, чтобы вернуть массив, в котором каждый элементпередает условие (el> num) в функцию обратного вызова .(filter, reduce и map были введены в ES5 и являются очень полезными методами работы с массивами, и их стоит изучить.)

В этом примере я передал - и вызвал - взамен целую функцию с именем 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);

Modern JS> = ES6 позволит вам сократить объем кода, который вы должны написать, используя функции стрелок.Следующий однострочный код будет работать вместо функции в примере:

const greaterThan = n  => el => el > n;
0 голосов
/ 14 декабря 2018

Вы можете использовать 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));
0 голосов
/ 14 декабря 2018

Для работы с массивами вы можете использовать функцию 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);

Вы можете поместить это в функцию.

0 голосов
/ 14 декабря 2018

Вам необходимо создать новый пустой массив и заполнить его числами, которые больше входного значения.

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));
...