2016-11-17 2 views
-4

вот полный код:Javascript: спросить объяснение

function LongestWord(sen) { 

    // we use the regex match function which searches the string for the 
    // pattern and returns an array of strings it finds 
    // in our case the pattern we define below returns words with 
    // only the characters a through z and 0 through 9, stripping away punctuation 
    // e.g. "hello$% ##all" becomes [hello, all] 
    var arr = sen.match(/[a-z0-9]+/gi); 

    // the array sort function takes a function as a parameter 
    // which is used to compare each element in the array to the 
    // next element in the array 
    var sorted = arr.sort(function(a, b) { 
    return b.length - a.length; 
    }); 

    // this array now contains all the words in the original 
    // string but in order from longest to shortest length 
    // so we simply return the first element 
    return sorted[0]; 

}LongestWord("the $$$longest# word is coderbyte"); 

, но я просто нужен кто-то, чтобы объяснить только эту часть:

var sorted = arr.sort(function(a, b) { 
    return b.length - a.length; 
    }); 

Я понимаю, как функция и вид работ, но вид смешанный, и мой мозг разбился. а также вы можете дайте мне еще простой вариант, чтобы решить эту проблему >> самое длинное слово, что в моем использовании if-else и сравнении?

+2

https://developer.mozilla.org/en/ docs/Web/JavaScript/Reference/Global_Objects/Array/sort – Liam

+0

Так в чем проблема? Вы просто ничего не понимаете? И вы хотите, чтобы мы предоставили вам альтернативу с использованием структуры if/else? ... – chazsolo

+0

@chazsolo нет, мне просто нужно, чтобы кто-то объяснил эту часть, остальное не так важно ... если вы хотите дать другую альтернативу для мое новое знание для меня очень приятно. –

ответ

0

Для функции sort() вы можете обратиться к documentation

Для более простой альтернативы увидеть следующий код

function LongestWord(sen) { 
 
    let longest = ""; 
 
    sen.match(/[a-z0-9]+/gi).forEach(function(word) { 
 
    if (word.length > longest.length) 
 
     longest = word; 
 
    }) 
 
    return longest; 
 
} 
 
console.log(LongestWord("the $$$longest# word is coderbyte"));

+0

Ваша альтернатива не дает тот же выход, что и заданная функция. – chazsolo

+0

@chazsolo почему? Функция должна возвращать самое длинное слово. Это то же, что и моя функция. – Weedoze

+0

Код в вопросе обрезает не буквенно-цифровые символы с каждого слова, а ваш нет. Все, что я говорю, это результат другой. Пример длинного слова примера OP - «coderbyte», но ваш возвращает «$$$ longest #». Не говорите, что ваш ответ _wrong_, но это не то же самое. – chazsolo