![](/img/trans.png)
[英]Javascript what is the best way to filter objects based on a list of strings in an array?
[英]Best way to searching in an array of objects, based on given range in numbers
例如,我們有一個像
var arr = [{'startTime': 0, 'endTime': 2},
{'startTime': 1, 'endTime': 3},
{'startTime': 4, 'endTime': 9},
{'startTime': 5, 'endTime': 9},
{'startTime': 7, 'endTime': 13},
{'startTime': 20, 'endTime': 25},
{'startTime': 27, 'endTime': 32},
{'startTime': 30, 'endTime': 35},
]
這個數組可以是任意長度,現在如果需要8作為當前時間的結果,那么我們需要搜索范圍內 8 依賴的所有項目。 所以結果將是
[{'startTime': 4, 'endTime': 9},
{'startTime': 5, 'endTime': 9},
{'startTime': 7, 'endTime': 13},]
在數組的最小迭代中搜索這個的最佳方法是什么?
試試這樣。
var arr = [{'startTime': 0, 'endTime': 2}, {'startTime': 1, 'endTime': 3}, {'startTime': 4, 'endTime': 9}, {'startTime': 5, 'endTime': 9}, {'startTime': 7, 'endTime': 13}, {'startTime': 20, 'endTime': 25}, {'startTime': 27, 'endTime': 32}, {'startTime': 30, 'endTime': 35}, ]; console.log(arr.filter((item, index) => (item.startTime <= 8 && item.endTime >= 8)));
您可以使用以下謂詞使用Array#filter()
來實現此目的:
item => item.startTime <= value && value <= item.endTime
其中item
是arr
被過濾的項目, value
是在item
的范圍內測試包含的值。
這可以用代碼表示為:
var arr = [{'startTime': 0, 'endTime': 2}, {'startTime': 1, 'endTime': 3}, {'startTime': 4, 'endTime': 9}, {'startTime': 5, 'endTime': 9}, {'startTime': 7, 'endTime': 13}, {'startTime': 20, 'endTime': 25}, {'startTime': 27, 'endTime': 32}, {'startTime': 30, 'endTime': 35}, ]; /* Filters items of arr that have a range containing the specified value */ const getItemsContaining = (value) => arr.filter(item => item.startTime <= value && value <= item.endTime) console.log(getItemsContaining(8))
您可以使用filter
過濾數組:
var arr = [{'startTime': 0, 'endTime': 2}, {'startTime': 1, 'endTime': 3}, {'startTime': 4, 'endTime': 9}, {'startTime': 5, 'endTime': 9}, {'startTime': 7, 'endTime': 13}, {'startTime': 20, 'endTime': 25}, {'startTime': 27, 'endTime': 32}, {'startTime': 30, 'endTime': 35}, ] console.log(arr.filter(el => el.startTime < 8 && el.endTime > 8))
這是javascript中二叉搜索樹的實現。 您可以檢查它https://www.geeksforgeeks.org/implementation-binary-search-tree-javascript/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.