JavaScript 数组随机获取多个元素
今天撸代码实现了 array.forEach();
的类似方法 array.forRandom();
这个方法可以随机不重复地获取数组中多个元素并进行相应处理。
函数实现
Array.prototype.forRandom = function(n, callback) {
// 如果 n 大于数组长度,则直接调用 forEach();
if (n >= this.length) {
this.forEach(function(element) { callback(element); });
return;
}
// 深复制
var temp = [];
this.forEach(function(element, index) { temp[index] = element; });
var len = temp.length;
// 随机不重复
for (var i = 0; i < n; i++) {
var index = parseInt(Math.random() * 100) % len;
callback(temp[index]);
temp[index] = temp[--len];
}
}
用法
var testArray = [1, 2, 3, 4, 5, 6, 7, 8];
// 从数组中随机取 3 个元素进行操作
testArray.forRandom(3, function(element) {
console.log(element);
});