Nar*_*esh 7 javascript underscore.js
Underscore提供了sortBy
对对象数组进行排序的功能.但是,一旦我有这个排序数组,有没有办法使用二进制搜索找到一个元素?该函数find
不利用数组已排序的事实,而函数indexOf
确实如此,但它没有提供指定排序键的方法.
该函数_.sortedIndex
用于二进制搜索,但比您的目的要通用一些。我将使用它来构建sortedFind,例如:
_.sortedFind = function sortedFind(list, item, key) {
return (_.isEqual(item, list[_.sortedIndex(list, item, key)]));
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
// http://jsfiddle.net/w3hzrehy/
_.sortedFind([10, 20, 30, 40, 50], 10); // true
var stooges = [{name: 'moe', age: 40}, {name: 'curly', age: 60}];
_.sortedFind(stooges, {name: 'larry', age: 50}, 'age'); // false
_.sortedFind(stooges, {name: 'curly', age: 60}, 'age'); // true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1342 次 |
最近记录: |