34 lines
1003 B
Plaintext
34 lines
1003 B
Plaintext
'use strict';
|
|
|
|
var callBound = require('call-bind/callBound');
|
|
|
|
var ArrayCreate = require('es-abstract/2023/ArrayCreate');
|
|
var CreateDataPropertyOrThrow = require('es-abstract/2023/CreateDataPropertyOrThrow');
|
|
var IsCallable = require('es-abstract/2023/IsCallable');
|
|
var LengthOfArrayLike = require('es-abstract/2023/LengthOfArrayLike');
|
|
var ToObject = require('es-abstract/2023/ToObject');
|
|
var ToString = require('es-abstract/2023/ToString');
|
|
|
|
var $TypeError = require('es-errors/type');
|
|
|
|
var $sort = callBound('Array.prototype.sort');
|
|
|
|
module.exports = function toSorted(comparefn) {
|
|
if (typeof comparefn !== 'undefined' && !IsCallable(comparefn)) {
|
|
throw new $TypeError('`comparefn` must be a function');
|
|
}
|
|
|
|
var O = ToObject(this); // step 2
|
|
var len = LengthOfArrayLike(O); // step 3
|
|
var A = ArrayCreate(len); // step 4
|
|
var j = 0;
|
|
while (j < len) { // steps 5-7, 9-10
|
|
CreateDataPropertyOrThrow(A, ToString(j), O[j]);
|
|
j += 1;
|
|
}
|
|
|
|
$sort(A, comparefn); // step 8
|
|
|
|
return A; // step 11
|
|
};
|