2016-03-03 99 views
1

我需要找出數組中最長的字符串。首先,我將不同的「文本」元素放入我的數組中,因爲這些「文本」元素的大小和數量可能因案例而異。 (他們是一個圖表的標貼,因此是基於圖表的部分產生獲取數組中最長字符串的長度

我的代碼現在看起來是這樣的:。

var textLengthArray = []; 
      domContainer.find(" g > .brm-y-direction > .tick > text").each(function() { 
       textLengthArray.push($(this)); 
      }); 
      var lgth = 0; 
      var longestString; 
      for (var i = 0; i < textLengthArray.length; i++) { 
       if (textLengthArray[i].length > lgth) { 
        var lgth = textLengthArray[i].length; 
        longestString = textLengthArray[i]; 
       } 
      } 

它已經推動所有文本元素融入到我的數組但是當我使用

alert(longestString.length) 

我得到荃「1」的結果。我非常舒爾我有。長度之前的任何地方增加的.text,因爲代碼不檢查死的長度限制:Textlength的textelements。 因爲我很新到javascript我會非常感謝一些幫助。

在此先感謝!

+0

我正在運行它,它的工作原理 - 雖然我使用的是硬編碼的字符串數組而不是'domContainer.find'這一行。 – millerbr

回答

3

textLengthArray.push($(this));的元素應該是textLengthArray.push($(this).text());否則你的陣列由jQuery的對象。確實jQuerySet具有length屬性。在你的情況下,這個集合由1個元素組成。

+0

非常感謝。現在它就像它應該那樣工作! – SaltyM

+0

@SaltyM,那麼請將此標記爲答案,或者如果不是,請修改問題。乾杯 – tenbits

1

您在重新分配的值的數組的每個迭代重新聲明lgth

var lgth = textLengthArray[i].length替換爲lgth = textLengthArray[i].length並且您應該很好。

+0

那麼它應該返回0而不是1 –

+0

@ParvSharma你是什麼意思?它應該返回數組中最長字符串的長度..? –

+0

變量的初始值 –

1

我不知道你的代碼的其餘部分,看起來不錯。但是你推送一個jQuery對象$(this),而不是一個字符串。第三行應爲textLengthArray.push(this);

顯然您的推字符串之一是一個有效的jQuery選擇用於查找:-)