diff --git a/lodash.js b/lodash.js index cefc1170e..fa4395c2b 100644 --- a/lodash.js +++ b/lodash.js @@ -256,7 +256,11 @@ return -1; } } - return ai < bi ? -1 : 1; + // The JS engine embedded in Adobe applications like InDesign has a buggy + // `Array#sort` implementation that causes it, under certain circumstances, + // to return the same value for `a` and `b`. + // See https://github.com/jashkenas/underscore/pull/1247 + return ai < bi ? -1 : (ai > bi ? 1 : 0); } /** diff --git a/test/test.js b/test/test.js index 810e65c20..0022e7d10 100644 --- a/test/test.js +++ b/test/test.js @@ -3151,6 +3151,20 @@ QUnit.module('lodash.sortBy'); (function() { + test('should sort in ascending order', function() { + var actual = _.pluck(_.sortBy([ + { 'num': 991 }, + { 'num': 212 }, + { 'num': 11 }, + { 'num': 16 }, + { 'num': 74 }, + { 'num': 0 }, + { 'num': 1515 } + ], 'num'), 'num'); + + deepEqual(actual, [0, 11, 16, 74, 212, 991, 1515]); + }); + test('should perform a stable sort (test in IE > 8, Opera, and V8)', function() { function Pair(x, y) { this.x = x;