|
1 | 1 | // Setup |
2 | 2 | var leven = require('leven') |
3 | 3 |
|
4 | | -// Export main function |
5 | | -module.exports = function (ary, src1, key1, src2, key2) { |
6 | | - if (key1 instanceof Array) { |
7 | | - var levMinInAry = function (array) { |
8 | | - var min = 1000 |
9 | | - var len = array.length |
10 | | - for (var counter = 0; counter < len; counter++) { |
11 | | - var val = array[counter] |
12 | | - if (val && val.length && val.length > 0) { |
13 | | - var levScore = leven(src1, array[counter]) |
14 | | - if (levScore < min) min = levScore |
15 | | - } |
16 | | - } |
17 | | - return min |
| 4 | +// Helpers |
| 5 | +var levMinInAry = function (array, src) { |
| 6 | + var min = 1000 |
| 7 | + var len = array.length |
| 8 | + for (var counter = 0; counter < len; counter++) { |
| 9 | + var val = array[counter] |
| 10 | + if (val && val.length && val.length > 0) { |
| 11 | + var levScore = leven(src, array[counter]) |
| 12 | + if (levScore < min) min = levScore |
18 | 13 | } |
19 | | - return ary.sort(function (a, b) { |
20 | | - var aLev = levMinInAry(key1.map(function (k) { return a[k] })) |
21 | | - var bLev = levMinInAry(key1.map(function (k) { return b[k] })) |
22 | | - return aLev - bLev |
23 | | - }) |
24 | 14 | } |
| 15 | + return min |
| 16 | +} |
| 17 | + |
| 18 | +// Export main function |
| 19 | +module.exports = function (ary, src1, key1, src2, key2) { |
25 | 20 | return ary.sort(function (a, b) { |
| 21 | + if (key1 instanceof Array) { |
| 22 | + var aLev = levMinInAry(key1.map(function (k) { return a[k] }), src1) |
| 23 | + var bLev = levMinInAry(key1.map(function (k) { return b[k] }), src1) |
| 24 | + return aLev - bLev |
| 25 | + } |
26 | 26 | if (!key1 && !key2) return leven(src1, a) < leven(src1, b) ? -1 : 1 |
27 | 27 | if (!key2) return leven(src1, a[key1]) < leven(src1, b[key1]) ? -1 : 1 |
28 | 28 | var score = 0 |
|
0 commit comments