Возвращение самого длинного из массива с 1 параметром в JavaScript - PullRequest
0 голосов
/ 20 мая 2018

Были заданы похожие вопросы, но я не нашел вопроса, который помог бы моей проблеме .... Я хочу создать функцию, которая принимает один параметр, возвращает самую длинную строку в массиве, и если 2 имеют одинаковую длину, возвращаетпервый в строке.Я уверен, что мне понадобится цикл for и тому подобное, но я ничего не получаю, и код, который у меня есть, не очень хорош, но я публикую на ваше рассмотрение:

     function longestString([strs]) {
       var strs = ["afrec" "aaa", "tummdor"];
       var lgth = 0;
       var longest;
       for (var i=0; i < strs.length; i++) {
        if strs[i].length > lgth) {
          var lgth = strs[i].length;
          longest = strs[i];
        }

      }
      return longest;
    }

Ответы [ 3 ]

0 голосов
/ 20 мая 2018

Вы можете отсортировать массив, используя .sort(), а затем вернуть самое первое значение массива.

let longestString = a => a.sort((s1, s2) => s2.length - s1.length)[0];

console.log(longestString(["afrec", "aaa", "tummdor", "summdar"]));
0 голосов
/ 20 мая 2018

Кстати, ваш код должен работать отдельно от нескольких синтаксических ошибок:

function longestString(strs) {
   var lgth = 0;
   var longest;
   for (var i=0; i < strs.length; i++) {
    if (strs[i].length > lgth) {
      lgth = strs[i].length;
      longest = strs[i];
    }
  }
  return longest;
}

console.log(longestString(["afrec", "aaa", "tummdssssssor", "adadadadadad"]));
0 голосов
/ 20 мая 2018

Вы можете использовать метод JavaScript Array reduce().

Метод reduce() уменьшает массив до одного значения.Этот метод выполняет предоставленную функцию для каждого значения массива.Возвращаемое значение функции сохраняется в аккумуляторе (результат / итог).

var strs = [ 'afrec', 'aaa', 'tummdor' ];

var longest = strs.reduce( function( a, b ) {
    return a.length > b.length ? a : b
}, '');

console.log( 'Longest string is: ' + longest )
...