I am trying to write a basic javascript function to find the longest word in a string and log it's length.
So far I have:
function findLongestWord(str) {
var words = [];
var longest = [];
words.push(str.split(" "));
for(var i = 0; i < words.length; i++){
if (words[i].length > longest[0].length){
longest.push(words[i]);
}
}
return longest[0].length;
}
findLongestWord('The quick brown fox jumped over the lazy dog');
It makes perfect sense to me, yet it gives me an error. I tried console.logging each step and it fails around the for loop.
When you use words.push(str.split(" "))
, the array words
looks like
[
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
]
Another problem is that when you check longest[0].length
for the first iteration in the for
, it is undefined
. Which results in the error
Uncaught TypeError: Cannot read property 'length' of undefined
To solve this, you can use longest
as string
instead of array
. And in the for
, assign the string having the length
greater than the current longest
string to it.
At the end of the function, you can return the longest
string.
Problems/Suggestions:
str.split(' ')
to directly assignment to words
variable longest
as string
variable instead of array
and initialize
it to empty string, ie ''
, to avoid the above error longest
with the string in the words
array words
array is greater than the longest
, update the longest
. \\s+
to split
the string by spaces function findLongestWord(str) { var words = str.split(/\\s+/); var longest = ''; for (var i = 0; i < words.length; i++) { if (words[i].length > longest.length) { longest = words[i]; } } return longest; } var longestWord = findLongestWord('The quick brown fox jumped over the lazy dog'); document.write('Longest Word: "' + longestWord + '"'); document.write('<br />Longest Word Length: ' + longestWord.length);
You can greatly simplify this using Array.prototype.sort
and Array.prototype.shift
. For example
var str = 'The quick brown fox jumped over the lazy dog', longest = str.split(' ').sort(function(a, b) { return b.length - a.length; }).shift(); document.getElementById('word').innerHTML = longest; document.getElementById('length').innerHTML = longest.length;
<p id="word"></p> <p id="length"></p>
The sort()
will produce an array of strings sorted by their length ( longest to shortest ) and shift()
grabs the first element. You could also sort the other way ( shortest to longest ) using return a.length - b.length
and pop()
instead of shift()
to grab the last element.
Try
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
if (longest < str[i].length) {
longest = str[i].length;
word = str[i];
}
}
return word;
}
function findLongestWord(str) {
var arr=str.split(" ");
var sarr=arr.sort(function(a,b){return b.length-a.length;});
str=sarr[0];
return str.length;
}
using the javascript Array.prototype.sort()
we can slove this problem elegantly without using the loop
if (words[i].length > longest[0].length)
You will be getting error in above line. As at first time, it is empty.
Your statement
words.push(str.split(" "));
should be
words=str.split(" ")
And @Tushar solved the rest of your "problems" too ... ;-)
Here is another shorter version:
function findTheLongestWord(str) { var temp = ''; (str || "").split(/\\s+/).forEach(function(word) { temp = word.length > temp.length && word || temp; }); return "longest word is: " + temp + " and it's length is: " + temp.length; } alert (findTheLongestWord("The quick brown fox jumped over the lazy dog, once again!"));
To find the longest keyword string in Java you need to write a program.
public class FindLarge {
private String longestWord;
public String longestWord(String sen) {
String arr[] = sen.split(" "); // seperates each word in the string and stores it in array
longestWord = arr[0]; // Assume first word to be the largest word
for (String a : arr)
if (longestWord.length() < a.length()) // check length of each word
longestWord = a;
return longestWord;
}
public static void main(String[] args) {
FindLarge fl=new FindLarge();
String longestWord=fl.longestWord("Hello Welcome to Java"); // string to be checked
System.out.println("Longest Word: "+ longestWord); // Final Output
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.