Vấn đề
Cần viết hàm JS nhận mảng số arr (có thể trùng lặp) và số nguyên num tồn tại trong mảng. Trả về chỉ mục ngẫu nhiên trong các vị trí chứa num.
Ví dụ:
const arr = [5, 3, 6, 7, 3, 4, 2, 3]; const num = 3;
Kết quả:
const output = 4;
Giải thích:
Số 3 ở index 1,4,7. Chọn ngẫu nhiên một trong ba.
Ví dụ
Mã thực hiện:
const arr = [5, 3, 6, 7, 3, 4, 2, 3]; const num = 3; Array.prototype.pick = function(target) { const targets = [] this.findTarget(0, this.length, target, targets); return targets[Math.floor(Math.random() * targets.length)]; }; Array.prototype.findTarget = function(start, end, target, targets) { if(start + 1 === end || start === end) { if(this[start] === target) targets.push(start); return; } let j = start + Math.floor((end - start)/2); this.findTarget(start, j, target, targets); this.findTarget(j, end, target, targets); }; console.log(arr.pick(num));
Kết quả
Kết quả in ra console:
4