hexo/node_modules/utility/array.js

50 lines
1020 B
JavaScript
Raw Normal View History

2023-09-25 15:58:56 +08:00
'use strict';
/**
* Array random slice with items count.
* @param {Array} arr
* @param {Number} num, number of sub items.
* @return {Array}
*/
exports.randomSlice = function randomSlice(arr, num) {
if (!num || num >= arr.length) {
return arr.slice();
}
var index = Math.floor(Math.random() * arr.length);
var a = [];
for (var i = 0, j = index; i < num; i++) {
a.push(arr[j++]);
if (j === arr.length) {
j = 0;
}
}
return a;
};
/**
* Remove one exists element from an array
* @param {Array} arr
* @param {Number} index - remove element index
* @return {Array} the array instance
*/
exports.spliceOne = function spliceOne(arr, index) {
if (index < 0) {
index = arr.length + index;
// still negative, not found element
if (index < 0) {
return arr;
}
}
// don't touch
if (index >= arr.length) {
return arr;
}
for (var i = index, k = i + 1, n = arr.length; k < n; i += 1, k += 1) {
arr[i] = arr[k];
}
arr.pop();
return arr;
};