我從我們的服務器獲取了一個陣列,其中包含 2400 個物件(總大小約為 7MB),我想過濾其中的一些第一個值。現在我正在使用filter和slice方法的組合:
const keyword = 'whatever word';
const recommendList =bigArray.filter(item => item.name.includes(keyword)).slice(0, 5);
我所知道的是filter方法迭代陣列中的所有元素,我認為它會影響我的應用程式(React Native)的性能,導致其大資料。那么是否有任何方法可以過濾某些值的陣列,而無需迭代所有元素?
uj5u.com熱心網友回復:
const keyword = 'whatever word';
const recommendList = [];
for (let i=0; i<bigArray.length; i ) {
if ( recommendList.length >= 5)
break;
const item = bigArray[i];
if (item.name.includes(keyword))
recommendList.push(item);
}
uj5u.com熱心網友回復:
在這種情況下,我認為過濾器(復雜度為 O(n))應該是導致性能影響最小化的最佳解決方案。
想想看,如果你只是過濾這 2400 個物件中的一些值,比如 1500。那么你只會得到 1500 個物件的過濾結果,其余的 900 個物件將永遠不會被使用。所以至少需要一個回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358449.html
標籤:javascript 数组
