Найти самую длинную строку в массиве - PullRequest
0 голосов
/ 19 сентября 2018

Я должен найти самую длинную строку в массиве, но не могу найти, что не так с моим кодом.Что-то не работает при попытке отладки в коде Visual Studio, оно просто не отсоединится.Пожалуйста, помогите мне с тем, что не так!

Код:

let arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborg"];

function long_string(arr){
   let longest="";
   for (let i=0;i<arr.length;i++){
      if (arr[i]>longest){
         longest=arr[i];
      }
   } 
   return longest;
}

long_string(arr)

Может кто-нибудь заметить ошибку?

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Для этого можно использовать метод reduce и проверять длину текущей строки в каждой итерации.

let arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborg"];
let result = arr.reduce((r, e) => r.length < e.length ? e : r, "");
console.log(result)
0 голосов
/ 19 сентября 2018

Другим способом будет сортировка и получение первого элемента

let arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborg"];
    
console.log(arr.sort((a,b)=>b.length-a.length)[0])
0 голосов
/ 19 сентября 2018

Вам нужно проверить длину элемента и сохраненную самую длинную строку.

if (arr[i].length > longest.length) {
//        ^^^^^^^          ^^^^^^^

Еще один совет: вы можете использовать первый элемент в качестве начального значения для longest и начать итерацию с индекса 1.

function long_string(arr) {
    let longest = arr[0];
    for (let i = 1; i < arr.length; i++) {
        if (arr[i].length > longest.length) {
            longest = arr[i];
        }
    }
    return longest;
}

let arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborg"];

console.log(long_string(arr));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...