programing

JavaScript 배열에서 임의 항목 가져오기

sourcetip 2023. 1. 20. 17:40
반응형

JavaScript 배열에서 임의 항목 가져오기

var items = Array(523, 3452, 334, 31, ..., 5346);

에서 랜덤 아이템을 가져오려면 어떻게 해야 하나요?items?

var item = items[Math.floor(Math.random()*items.length)];

밑줄 사용(또는 loDash :):

var randomArray = [
   '#cc0000','#00cc00', '#0000cc'
];

// use _.sample
var randomElement = _.sample(randomArray);

// manually use _.random
var randomElement = randomArray[_.random(randomArray.length-1)];

또는 전체 어레이를 섞으려면:

// use underscore's shuffle function
var firstRandomElement = _.shuffle(randomArray)[0];

1. 솔루션: 어레이 프로토타입 정의

Array.prototype.random = function () {
  return this[Math.floor((Math.random()*this.length))];
}

인라인 어레이로 동작합니다.

[2,3,5].random()

물론 사전에 정의된 어레이도

var list = [2,3,5]
list.random()

2. 솔루션: 목록을 받아들여 요소를 반환하는 커스텀 함수를 정의합니다.

function get_random (list) {
  return list[Math.floor((Math.random()*list.length))];
}


get_random([2,3,5])

문제를 해결하기 위해 jQuery를 사용해야 하는 경우(NB: 사용하지 마십시오):

(function($) {
    $.rand = function(arg) {
        if ($.isArray(arg)) {
            return arg[$.rand(arg.length)];
        } else if (typeof arg === "number") {
            return Math.floor(Math.random() * arg);
        } else {
            return 4;  // chosen by fair dice roll
        }
    };
})(jQuery);

var items = [523, 3452, 334, 31, ..., 5346];
var item = jQuery.rand(items);

이 플러그인은 어레이 또는 [0]의 값을 지정한 경우 임의 요소를 반환합니다.n) 번호 또는 기타 임의의 보장된 랜덤 값!

어레이의 길이를 바탕으로 함수를 재귀적으로 호출함으로써 어레이 반환이 생성됩니다.

http://jsfiddle.net/2eyQX/에서 작업 데모 실시

또 다른 방법이 있습니다.

function rand(items) {
    // "~~" for a closest "int"
    return items[~~(items.length * Math.random())];
}

또는 @1248177에 의해 다음과 같이 권장됩니다.

function rand(items) {
    // "|" for a kinda "int div"
    return items[items.length * Math.random() | 0];
}
var random = items[Math.floor(Math.random()*items.length)]

jQuery는 JavaScript!자바스크립트 프레임워크일 뿐입니다.따라서 임의의 항목을 찾으려면 예를 들어 일반 이전 JavaScript를 사용합니다.

var randomItem = items[Math.floor(Math.random()*items.length)]
// 1. Random shuffle items
items.sort(function() {return 0.5 - Math.random()})

// 2. Get first item
var item = items[0]

단축:

var item = items.sort(function() {return 0.5 - Math.random()})[0];

(Jose dB에 의해) 더 쏜다:

let item = items.sort(() => 0.5 - Math.random())[0];
var rndval=items[Math.floor(Math.random()*items.length)];
var items = Array(523,3452,334,31,...5346);

function rand(min, max) {
  var offset = min;
  var range = (max - min) + 1;

  var randomNumber = Math.floor( Math.random() * range) + offset;
  return randomNumber;
}


randomNumber = rand(0, items.length - 1);

randomItem = items[randomNumber];

크레디트:

Javascript 함수: 난수 생성기

node.js를 사용하는 경우 고유 랜덤 어레이를 사용할 수 있습니다.단순히 배열에서 무작위로 무언가를 선택합니다.

다른 방법으로는 어레이 프로토타입에 메서드를 추가하는 방법이 있습니다.

 Array.prototype.random = function (length) {
       return this[Math.floor((Math.random()*length))];
 }

 var teams = ['patriots', 'colts', 'jets', 'texans', 'ravens', 'broncos']
 var chosen_team = teams.random(teams.length)
 alert(chosen_team)
const ArrayRandomModule = {
  // get random item from array
  random: function (array) {
    return array[Math.random() * array.length | 0];
  },

  // [mutate]: extract from given array a random item
  pick: function (array, i) {
    return array.splice(i >= 0 ? i : Math.random() * array.length | 0, 1)[0];
  },

  // [mutate]: shuffle the given array
  shuffle: function (array) {
    for (var i = array.length; i > 0; --i)
      array.push(array.splice(Math.random() * i | 0, 1)[0]);
    return array;
  }
}

언급URL : https://stackoverflow.com/questions/5915096/get-a-random-item-from-a-javascript-array

반응형