2015-04-28 4 views
-1

У меня есть этот кусок кода, который добавляет изображение в «imageContainer»Как получить случайный объект из массива объектов? Javascript

$('.imageContainer').prepend('<img id="xboxLogo" src="images/xboxLogo.png"/>') 

У меня есть этот массив объектов:

var imagesArray = { 
    xboxLogo : { 
     id : 'xboxLogo'; 
     src: "images/xboxLogo.png";  
    }, 
    playStatLogo : { 
     id : 'playStatLogo'; 
     src: "images/playStatLogo.png"; 
    }, 
    wiiLogo : { 
     id : 'wiiLogo'; 
     src: "images/wiiLogo.png"; 
    } 
    } 

То, что я хочу сделать, это есть функция, я вызов, который добавляет изображение в «imageContainer», но я хочу, чтобы изображение было случайно выбрано из «imageArray». Как я случайно получаю одно из изображений 3 (xbox, playStation, wii), а затем извлекаю их атрибуты, чтобы использовать их для создания изображений?

+1

[Math.random()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) + размер массива (после jsonparsing) + использовать результат как index = ваш ответ – KarelG

+1

У вас нет массива. У вас есть объект JSON. –

+0

попробуйте этот параметр var item = imagesArray [Math.floor (Math.random() * imagesArray .length)]; – Sushil

ответ

3

var imagesArray = [ 
 
    { 
 
    id: 'xboxLogo', 
 
    src: "images/xboxLogo.png" 
 
    }, 
 
    { 
 
    id: 'playStatLogo', 
 
    src: "images/playStatLogo.png" 
 
    }, 
 
    { 
 
    id: 'wiiLogo', 
 
    src: "images/wiiLogo.png" 
 
    } 
 
]; 
 

 
$('button').click(function() { 
 
    var randomImage = imagesArray[Math.floor(Math.random() * imagesArray.length)]; 
 
    $('p').text(randomImage.src); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p></p> 
 

 
<button>pick random</button>

+0

отлично, приятно и просто и с исполняемым фрагментом кода :) Спасибо, приму ваш ответ, когда смогу :)) –

1

Создайте случайное число, которое будет индексом изображения, которое вы хотите.

var keys = Object.keys(imagesArray); 
var n = keys.length; 
var index = Math.floor(Math.random() * n); 
var randomKey = keys[index] 
var image = imagesArray[randomKey] 
Смежные вопросы