12345678910111213141516171819202122232425262728293031323334 |
- var compare = require('./compare');
- function mediator(a, b) {
- return compare(this, a.converted, b.converted);
- }
- module.exports = function (array, opts) {
- if (!Array.isArray(array) || array.length < 2) {
- return array;
- }
- if (typeof opts !== 'object') {
- opts = {};
- }
- opts.sign = !!opts.sign;
- var insensitive = !!opts.insensitive;
- var result = Array(array.length);
- var i, max, value;
- for (i = 0, max = array.length; i < max; i += 1) {
- value = String(array[i]);
- result[i] = {
- value: array[i],
- converted: insensitive ? value.toLowerCase() : value
- };
- }
- result.sort(mediator.bind(opts));
- for (i = result.length - 1; ~i; i -= 1) {
- result[i] = result[i].value;
- }
- return result;
- };
|