Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเลือกดัชนีแบบสุ่มจากอาร์เรย์ใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers, arr ซึ่งอาจมีการซ้ำซ้อนเป็นอาร์กิวเมนต์แรกและจำนวนเต็มซึ่งมีอยู่ในอาร์เรย์เป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรส่งคืนดัชนีที่มีตัวเลขอยู่ในอาร์เรย์ และเนื่องจากตัวเลขอาจมีอยู่มากกว่าหนึ่งครั้งในอาร์เรย์ เราจึงต้องสุ่มเลือกดัชนีหนึ่งรายการและส่งคืนดัชนีนั้น

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

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

จากนั้นผลลัพธ์ควรเป็น −

const output = 4;

คำอธิบายผลลัพธ์:

หมายเลข 3 อยู่ที่ดัชนี 1, 4 และ 7 ในอาร์เรย์ และเนื่องจากเราต้องเลือกดัชนีใดๆ แบบสุ่ม ดังนั้นผลลัพธ์ที่ได้จึงเป็น 1

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

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

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

4