我有一系列產品如下
const totalProducts = ['washing machine', 'sewing machine', 'refrigerator', 'desk']
如果用戶在輸入欄位中鍵入任何單詞,我想從陣列中獲取所有匹配的產品。例如,如果用戶鍵入“ma”,那么我希望結果包含['washing machine', 'sewing machine']
為了達到預期的結果,我在下面執行此代碼
var result = totalProducts.filter((product) => product.includes('ma'));
我知道上面的代碼可以得到想要的結果。但假設 totalProducts 陣列的長度超過 1000。我上面的方法會有效地給出它應該得到的結果嗎?
還是有更好的方法來搜索和提高我的代碼性能?
uj5u.com熱心網友回復:
由于
(感謝這個網站的可視化。)如果你想找到包含“po”的字串,從根開始,取“p”節點,然后是“o”節點(這里折疊成“ot$”節點)。它下面的子樹包含指向字串#3 和#4 的鏈接(這個站點從1 開始索引它們),即“pot”和“spot”。(該站點還指出,“pot”的子字串從位置 1 開始,“spot”的子字串從位置 2 開始,但出于您的目的,此資訊不是必需的。)
如您所見,查找匹配字串的程序非常快;但必要的后綴樹會比原始串列大得多。如果您想將搜索限制為僅匹配單詞的開頭(例如,“ma”將匹配“washing machine”,但“chi”不會),您可以減小樹的大小。
但是,對于大多數目的,單次搜索的收益可以忽略不計;這可能僅在您需要快速重復執行搜索時才需要。對于數千個元素的陣列和偶爾的一次查找,您的原始方法幾乎可以肯定足夠好。后綴樹方法更快,但對于 OP 中的用例來說,這是一種矯枉過正和過早優化的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/490129.html
標籤:javascript 数组 反应 json 目的
