Computer >> Máy Tính >  >> Lập trình >> Javascript

Chọn chỉ mục ngẫu nhiên từ mảng trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng Numbers, arr, có thể chứa các bản sao làm đối số đầu tiên và một Số nguyên tồn tại trong mảng làm đối số thứ hai.

Hàm phải trả về một chỉ mục mà tại đó số tồn tại trong mảng và vì số có thể tồn tại nhiều lần trong mảng, chúng tôi phải chọn ngẫu nhiên một chỉ mục và trả về chỉ mục đó.

Ví dụ:nếu đầu vào của hàm là -

const arr = [5, 3, 6, 7, 3, 4, 2, 3];
const num = 3;

Sau đó, đầu ra phải là -

const output = 4;

Giải thích đầu ra:

Số 3 tồn tại ở chỉ mục 1, 4 và 7 trong mảng và vì chúng ta phải chọn bất kỳ chỉ mục nào một cách ngẫu nhiên, vì vậy đầu ra có thể là bất kỳ trong số 1.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

4