簡體   English   中英

如何在這里使用ES6代碼而不是for循環?

[英]How do I use ES6 code instead of a for loop here?

我正在尋找更好的方法來處理數組的搜索。 這就是我現在所擁有的。

function search (arr, word) {
  word = word.toUpperCase();
  var res = [];
  for(var i = 0; i < arr.length; i++) {
    if(arr[i].slice(0, word.length) == word) {
      res.push(arr[i]);
    }
  }
  return res;
}

var myArr = ["england", "China", "France", "Eng", "Ch", "Australia"];

search(myArr, "e");

它可以工作,但是我想嘗試用ES6代碼替換循環。 我如何在這里使用ES6?

您可以利用一些內置方法,例如String#startsWithArray#filter

 function search(arr, word) { return arr.filter(element => element.toUpperCase().startsWith(word.toUpperCase())); } const myArr = ["england", "China", "France", "Eng", "Ch", "Australia"]; console.log(search(myArr, "e")); 

filter方法僅將滿足回調指定條件的元素保留在數組中。 因此,無論大小寫如何,它都會檢查元素是否以單詞開頭。

並且,如果您需要IE的支持,請嘗試使用String#indexOf

element.toUpperCase().indexOf(word.toUpperCase()) == 0

這將檢查元素是否以指定的字符串開頭(無論大小寫),並且在功能上等效。


請注意,盡管看起來不太好,但如estus所述for循環在性能方面更好。 經過測試,看起來for循環大約需要0.1毫秒才能完成,而我的解決方案需要0.2到0.7毫秒才能完成。 盡管存在差異,但在性能真正重要之前,我不會擔心性能-但是這里的速度更快是您的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM