- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
function natRound() {
var out = []
, fib = [0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233] // etc
, _data = function() { // random values
var out = []
, count = Math.round( Math.random() * 100)
;
for(var i=0; i < count; i++ ) {
out.push( Math.random() * 100 ); // in km
}
return out.sort(function(a,b){ return a-b; });
}()
, roundTo = function (value) {
var i = fib.length;
while(i--) {
if ( value < fib[i] ) continue;
return i? i: value; // natural sorting
}
}
;
for( var i=0; i<_data.length; i++ ) {
out.push( 'Value: [' + _data[i] + ']; Sort = [' + roundTo(_data[i]) + ']' );
}
return out;
}
Необходимо было учесть дискретность при сортировке расстояний в километрах.
Например, в синтаксисе Elastic это выглядит так: