iT邦幫忙

0

JavaScript 如何更快的取得在 ARRAY 內 startsWith("Hello") 的字串?

不明 2022-04-30 14:51:57681 瀏覽
  • 分享至 

  • xImage

假設我有一個陣列 ARRAY:

var ARRAY = [
    "my_name_is_test.",
    "this_is_test.",
    "Hello_World!"
];

我想取得 startsWith("Hello") 的元素,我必須逐一掃瞄每個在 ARRAY 內的元素:

ARRAY.forEach(element => {
    if(element.startsWith("Hello")) return element;
});

想請問有更快的解法能實現一樣的效果嗎?例如:

ARRAY[element.startsWith("Hello")] // 類似這樣的功能
看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2022-05-01 09:48:19 檢舉
ARRAY.find(x => x.startsWith('Hello'))
不明 檢舉
感謝您提供的解法!雖然這在執行速度上沒有太大的區別,不過就簡潔程度來說的確不失為一個好方法!
fillano iT邦超人 1 級 ‧ 2022-05-03 08:54:00 檢舉
關於速度,有幾個點需要考慮:
1. 實際上不可能不遍歷就實做出來
2. 很多東西,例如內建物件的方法等,有可能是用Javascript實做出來的。很久沒看原始碼,所以現在是怎樣我也不太確定就是了
3. Javascript引擎會做動態最佳化,所以使用次數夠多的函數,執行速度可能會更快
不明 檢舉
好的!謝謝您的說明。的確,之前我尚未考慮到不遍歷就實做不出來的東西確實是存在的。就目前蒐集的資料看來,應該沒有比 O(n) 更快的解法了。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-04-30 18:24:01

我只會用filter
其實跟 foreach 也差不多
https://ithelp.ithome.com.tw/upload/images/20220430/20001787HQlBD2rqoS.png

不明 檢舉

感謝您提供的解法!不過就執行結果來說,filter() 似乎又比 forEach() 還要再慢一些。
https://ithelp.ithome.com.tw/upload/images/20220501/20148656WPITEF0MCl.png

我要發表回答

立即登入回答