![](/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.