Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 배열에서 무작위로 인덱스 선택

<시간/>

문제

첫 번째 인수로 중복을 포함하고 두 번째 인수로 배열에 존재하는 Integer를 포함할 수 있는 숫자 배열 arr을 사용하는 JavaScript 함수를 작성해야 합니다.

함수는 배열에 숫자가 존재하는 인덱스를 반환해야 하고 숫자가 배열에 두 번 이상 존재할 수 있으므로 무작위로 하나의 인덱스를 선택하고 해당 인덱스를 반환해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
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