2011-11-11 56 views
0

所以我試圖創建一個函數,通過基於searchTerm的數組搜索。如果數組中的元素具有searchTerm,則它應該輸出ALL內部的MyArray [] ;.難度從包含字符串的現有數組中輸出索引數組

我希望我已經解釋清楚,在此先感謝。

+0

因爲我在這裏看到你很新,你是否意識到在StackOverflow上適當的禮儀是當/如果一個答案回答你的問題,你應該將它標記爲「答案」所選答案的左上角?這就是幫助人們提供更好的資源的過程,也是人們提供答案的激勵過程的一部分。 – jfriend00

回答

0

myArray = colours[i]不附加到數組。

myArray.push(a); 
1

這裏有一個修正版本:

var colours = ["I like the colour red", "I hate the colour yellow", "I love the colour blue"]; 

function myFunction(colours, searchTerm) { 
    var myArray = []; 
    searchTerm = searchTerm.toLowerCase(); 

    for (var i = 0; i < colours.length; i++) { 
     if (colours[i].toLowerCase().indexOf(searchTerm) >= 0) { 
      myArray.push(i); 
     } 
    } 
    return myArray; 
} 

alert(myFunction(colours,"colour")) //Should return indexes 0,1,2 in myArray 

和工作演示在這裏:http://jsfiddle.net/jfriend00/GDM9R/

我不得不修復了很多問題:

  1. 你沒有加入結果正確MYARRAY。
  2. 您沒有將索引添加到myArray。
  3. 您沒有正確測試.indexOf()的結果(它在不匹配時返回-1)。
  4. 您正在迭代搜索短語的長度,而不是數組中的項目數。
  5. 您沒有將i聲明爲局部變量,因此它是隱式全局變量。
+0

謝謝。這可以不用'push()'工作嗎? –

+0

'.push()'是如何將項添加到數組的末尾。你爲什麼要避免這種情況?請參閱[這裏爲文檔](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push)。 – jfriend00

+0

對不起,我只是好奇,看看是否有另一種方式來做到這一點。謝謝你告訴我我哪裏出錯了。現在我可以從我犯的錯誤中學習。謝謝 –

相關問題