2017-04-20 60 views
-1

我想要顯示數組中最大的單詞(包含大多數字符)。到目前爲止,例如如果有人輸入'貓'和'鼠標',下面的消息將顯示在'鼠標包含5個字符'字樣下面。 要做到這一點,最簡單的方法是什麼?當輸入字段中沒有輸入任何內容時,如何顯示「名稱:空」。顯示數組中最大的單詞

var array = []; 
 
var Return; 
 

 

 
function begin() { 
 
var character = "Display words:"; 
 
var i = array.length 
 

 
if (character.trim() === "") { 
 
character = "Name: Empty" 
 

 
} 
 

 

 
    document.getElementById('ErrorOutput').innerHTML = character 
 
    while (i--) { 
 
    document.getElementById('message').innerHTML = array[i] + "<br/>" + document.getElementById('message').innerHTML; 
 
} 
 
} 
 

 
function addwords() { 
 

 
    Return = document.getElementById('input').value; 
 
    array.push(Return); 
 
}
<body> 
 
<input type="text" id=input></input> 
 
<button onclick="addwords()" class="button" type = "button">enter words</button><br><br> 
 
<button onclick="begin()" class="button" type = "button">display words</button><br><br> 
 
<p id="ErrorOutput"></p> 
 
<p id="message"></p> 
 
</body>

+2

創建像'longestWord'等於空字符串的變量。然後,對於數組中的每個項目,檢查這個單詞'x'的長度是否大於'longestWord'的長度,那麼'longestWord'現在變成等於'x'。最後,答案存儲在'longestword'中。它幾乎是一個現成的代碼,你只需要添加JS語法。 –

回答

1

要獲得一個數組中最大的字,你可以在陣列的元素長度排序:使用@Yeldar Kurmangaliyev評論

var arr = ['asdfa', 'asd', 'asdfasfasdfasdfasdfas', 'sd']; 
 

 
arr.sort((a, b) => b.length - a.length); 
 
console.log(arr[0])

或更快:

var arr = ['asdfa', 'asd', 'asdfasfasdfasdfasdfas', 'sd'], 
 
    longestWord = {word: '', len: 0}; 
 

 
arr.forEach(w => { 
 
    if (longestWord.len < w.length) { 
 
    longestWord.text = w; 
 
    longestWord.len = w.length; 
 
    } 
 
}); 
 

 
console.log(longestWord.text, longestWord.len);

+0

爲什麼'O(N * logN)'何時可以在'O(N)'中完成? :) –

+0

@YeldarKurmangaliyev得到的重點和改進的解決方案..感謝您的意見;) –

0

while (i--) { document.getElementById('message').innerHTML = array[i] + "<br/>" + document.getElementById('message').innerHTML;

這裏,你的循環,打印所有的字。

可以伊斯利與減少功能找到你的數組的元素最長:

var longest = array.reduce(function (p, n) { 
    if (p.length >= n.length) return p; 
    else return n; 
}); 

最後

document.getElementById('message').innerHTML = longest;

0

在這裏我給你做的簡單片段的工作。 函數getTheLongestWord將字符串作爲數組,並將最長的單詞作爲字符串返回。

var anArray = ["word", "longerWord", "theLongestWordInKnonUniverse", "notThatLongWord"]; 
 

 
function getTheLongestWord(a) { 
 
    var longest = 0; 
 
    var longestIndex = 0; 
 
    for (var i = 0; i < a.length; i++) { 
 
    var length = a[i].length; 
 
    if (length > longest) { 
 
     longest = length; 
 
     longestIndex = i; 
 
    } 
 
    } 
 
    return a[longestIndex]; 
 
} 
 

 
document.getElementById("placeHolder").innerHTML = getTheLongestWord(anArray);
<div id="placeHolder"></div>

相關問題