diff --git a/packages/core-js/internals/array-sort.js b/packages/core-js/internals/array-sort.js index c815d7ce3158..876c93296176 100644 --- a/packages/core-js/internals/array-sort.js +++ b/packages/core-js/internals/array-sort.js @@ -1,4 +1,4 @@ -'use strict'; +// TODO: use something more complex like timsort? var floor = Math.floor; var mergeSort = function (array, comparefn) { diff --git a/packages/core-js/modules/es.array.sort.js b/packages/core-js/modules/es.array.sort.js index 551a5a1bd8b6..ce7296a51380 100644 --- a/packages/core-js/modules/es.array.sort.js +++ b/packages/core-js/modules/es.array.sort.js @@ -89,7 +89,6 @@ $({ target: 'Array', proto: true, forced: FORCED }, { if (index in array) items.push(array[index]); } - // TODO: use something more complex like timsort? items = internalSort(items, getSortCompare(comparefn)); itemsLength = items.length; index = 0; diff --git a/tests/pure/es.array.sort.js b/tests/pure/es.array.sort.js index ac560ef946e0..e0dbf62f4e18 100644 --- a/tests/pure/es.array.sort.js +++ b/tests/pure/es.array.sort.js @@ -10,6 +10,7 @@ QUnit.test('Array#sort', assert => { assert.deepEqual(sort([1, 3, 2]), [1, 2, 3], '#1'); assert.deepEqual(sort([1, 3, 2, 11]), [1, 11, 2, 3], '#2'); + assert.deepEqual(sort([1, -1, 3, NaN, 2, 0, 11, -0]), [-1, 0, -0, 1, 11, 2, 3, NaN], '#3'); let array = Array(5); array[0] = 1; diff --git a/tests/tests/es.array.sort.js b/tests/tests/es.array.sort.js index 3ec67369a92d..f2195f0b5afe 100644 --- a/tests/tests/es.array.sort.js +++ b/tests/tests/es.array.sort.js @@ -10,6 +10,7 @@ QUnit.test('Array#sort', assert => { assert.deepEqual([1, 3, 2].sort(), [1, 2, 3], '#1'); assert.deepEqual([1, 3, 2, 11].sort(), [1, 11, 2, 3], '#2'); + assert.deepEqual([1, -1, 3, NaN, 2, 0, 11, -0].sort(), [-1, 0, -0, 1, 11, 2, 3, NaN], '#1'); let array = Array(5); array[0] = 1; diff --git a/tests/tests/es.typed-array.sort.js b/tests/tests/es.typed-array.sort.js index 2ab504c45cbc..d7088b6c0c87 100644 --- a/tests/tests/es.typed-array.sort.js +++ b/tests/tests/es.typed-array.sort.js @@ -11,6 +11,7 @@ if (DESCRIPTORS) QUnit.test('%TypedArrayPrototype%.sort', assert => { assert.looksNative(sort, `${ name }::sort looks native`); if (name.indexOf('Float') === 0) { + assert.deepEqual(new TypedArray([1, -1, 3, NaN, 2, 0, 11, -0]).sort(), new TypedArray([-1, -0, 0, 1, 2, 3, 11, NaN]), '#1'); assert.ok(1 / new TypedArray([0, -0]).sort()[0] < 0, '-0'); assert.deepEqual(new TypedArray([NaN, 1, NaN]).sort(), new TypedArray([1, NaN, NaN]), 'NaN'); }