Задать вопрос
@Iliyaity

Как найти самое большое число в подмасиве?

function largestOfFour(arr) {
  var results = [];
  for (var n = 0; n < arr.length; n++) {
    var largestNumber = 0;
    for (var sb = 0; sb < arr[n].length; sb++) {
      if (arr[n][sb] > largestNumber) {
        largestNumber = arr[n][sb];
      }
    }
// Объясните пожалуйста данную строчку
    results[n] = largestNumber;
  }

  return results;
}
  • Вопрос задан
  • 1352 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Это вообще в одну строку делается.
var input = [
  [-1,-3,-2],
  [1,3,5],
  [2,6,3],
  [7,3,3]
];

var result = input.map(a=>a.reduce((a, b)=>Math.max(a, b))) // all magic here

console.log(result) // [-1,5,6,7]


UPD: То-же самое, но подробнее:
var result = input.map(function(subArray) { 
  return subArray.reduce(function(prev, current){
    return Math.max(prev, current);
  })
})

array.map() - делает какие-то вычисления с каждым элементом массива, в нашем случае со "строкой" из двумерного массива. Возвращает новый массив с результатами.

array.reduce() - проходит по всем элементам массива, возвращает один элемент.
Например
[1,2,3,4,50].reduce((prev, current)=>prev + current)
вернет сумму всех элементов.

Math.max() - сравнивает два числа, возвращает то что побольше.

=> - стрелочная функция.
Позволяет записать короткие анонимные функции еще короче.
В основном за счет экономии на словах function и return. Если у функции только один аргумент на входе, или только одно действие, то можно еще и скобочки выбросить.

var x = function (element) {
  return element.width
}
превращается в
var x = element => element.width

UPD2: как подсказывает Panya, можно написать еще короче:
var result = input.map(a=>Math.max.apply(null,a))
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
results[n] = largestNumber;
Собираем в массив var results = []; все самые большие номера из подмасивов друг за другом (без сортировки и прочего).
n - кол-во подмасивов в массиве arr: for (var n = 0; n < arr.length; n++)
Ответ написан
Комментировать
@alokazay
javascript
А если так?
[1,2,3].sort(function(a,b){ return a-b})[0]
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы