You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
900 B
JavaScript
30 lines
900 B
JavaScript
6 years ago
|
var copyArray = require('./_copyArray'),
|
||
|
isIndex = require('./_isIndex');
|
||
|
|
||
|
/* Built-in method references for those with the same name as other `lodash` methods. */
|
||
|
var nativeMin = Math.min;
|
||
|
|
||
|
/**
|
||
|
* Reorder `array` according to the specified indexes where the element at
|
||
|
* the first index is assigned as the first element, the element at
|
||
|
* the second index is assigned as the second element, and so on.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {Array} array The array to reorder.
|
||
|
* @param {Array} indexes The arranged array indexes.
|
||
|
* @returns {Array} Returns `array`.
|
||
|
*/
|
||
|
function reorder(array, indexes) {
|
||
|
var arrLength = array.length,
|
||
|
length = nativeMin(indexes.length, arrLength),
|
||
|
oldArray = copyArray(array);
|
||
|
|
||
|
while (length--) {
|
||
|
var index = indexes[length];
|
||
|
array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
|
||
|
}
|
||
|
return array;
|
||
|
}
|
||
|
|
||
|
module.exports = reorder;
|