underscore.js的排序扩展。 倒序和多列排序
2014-07-01 00:00
246 查看
// Sort the object's values by a criterion produced by an iterator. _.sortBy = function (obj, iterator, context) { iterator = lookupIterator(iterator, context); return _.pluck(_.map(obj, function (value, index, list) { return { value: value, index: index, criteria: iterator(value, index, list) }; }).sort(function (left, right) { var a = left.criteria; var b = right.criteria; if (a !== b) { if (a > b || a === void 0) return 1; if (a < b || b === void 0) return -1; } return left.index - right.index; }), 'value'); }; // Sort the object's values by a criterion produced by an iterator. _.sortByDesc = function (obj, iterator, context) { iterator = lookupIterator(iterator, context); return _.pluck(_.map(obj, function (value, index, list) { return { value: value, index: index, criteria: iterator(value, index, list) }; }).sort(function (left, right) { var a = left.criteria; var b = right.criteria; if (a !== b) { if (a > b || a === void 0) return -1; if (a < b || b === void 0) return 1; } return left.index - right.index; }), 'value'); }; _.multisortBy = function (obj, iterator, context) { return _.pluck( _.map(obj, function (value, index, list) { return { value: value, criteria: iterator.call(context, value, index, list) } }).sort(function (left, right) { var a = left.criteria, b = right.criteria; if (!$.isArray(a)) { return a < b ? -1 : a > b ? 1 : 0; } else { var result = 0; for (var i = 0 ; i < a.length ; i++) { var r = a[i] < b[i] ? -1 : a[i] > b[i] ? 1 : 0; if (r != 0 || i == a.length - 1) return r; } } }), 'value'); }
相关文章推荐
- underscore.js _.first[Array]
- underscore.js _last[Array]
- underscore.js _.pick[Object]
- underscore.js _.isEmpty(Object)
- underscore.js _.isEqual[Object]
- 构建前端MVC,seajs,underscore.js,backbone.js 等琐碎的其他
- underscore.js _.isArguments[Object]
- underscore.js_.functions[Object]
- underscore.js _.values[Object]
- underscore.js _.isArray(Object)
- underscore.js _reset[Array]
- underscore.js _.difference[Array]
- underscore.js _.intersect[Array]
- underscore.js _.extend[Object]
- underscore.js _.lastIndexOf[Array]
- underscore.js _.initial[Array]
- underscore.js _.union[Array]
- underscore.js _.zip[Array]
- underscore.js _tap[Object]
- underscore.js _.isObject[Object]