2012-06-03 71 views
3

说这是我的JSON如何获得随机JSON数据,并追加到div元素

[ 
{ 
    "imageSmall": ["images/employee_jpgs/employees_abhishek_80x80.jpg"], 
    "imageBig": ["images/employee_jpgs/employees_abhishek_150x150.jpg"], 
    "name": ["Abhishek Shet"], 
    "quotes": ["Just perfect to start your career after school. Makes me feel  others in the industry are way slower then us. Awesome team and and a brilliant product to work on!!!!. And most importantly I enjoy what I do :)."], 
    "type": "employee" 
}, 
{ 
    "imageSmall": ["images/employee_jpgs/employees_barbra_80x80.jpg"], 
    "imageBig": ["images/employee_jpgs/employees_barbra_150x150.jpg"], 
    "name": ["Barbra Gago"], 
    "quotes": ["The best part about working at tibbr is how dynamic the environment is, there's a lot of flexibility and freedom to execute on new ideas. Because everyone is so talented, there is a ton of trust and support coming from managers and team members-we all count on each other to do the best possible job!"], 
    "type": "employee" 
}, 

一样继续,但有3种类型 1名员工 2-叽叽喳喳 3-社会

现在我的问题是我想随机得到这些JSON数据和附加到我的div元素 我用下面的代码

function(args){ 
var me=this; 
$.getJSON(args.json,function(data) { 
me.set(args); 
$.each(data, function(i){ 
    var id="randomizr_item_" + i; 
    var temp= $('<div id='+ id +' class="randomizr-grid-items"><img src="'+ this.imageSmall[0] +'" /></div>'); 
    me.config.container.append(temp); 
    this.target=$(temp); 
}); 

我知道如何使用下面的代码

entry = data[Math.floor(Math.random()*data.length)]; 

生成单个随机进入产生单一的随机项。

Plz帮助我如何从上面的json文件中随机获取json数据并附加到div。

回答

1

你需要做一组随机唯一编号,如下所示:

function generateRandom(min, max) { 
    var arr = []; 
    while(arr.length < 5){ 
     var randNum = Math.floor(Math.random() * (max - min + 1)) + min, 
      found=false; 
     for(var i=0;i < arr.length; i++){ 
     if(arr[i] == randNum){found=true;break} 
     } 
     if(!found)arr[arr.length] = randNum; 
    } 
    return arr; 
} 

然后,您需要遍历数据,如下所示:

这里我循环了独特的数组,而不是在data上,并使用数组的值作为索引到data

var orders = generateRandom(0, data.length-1); 

$.each(orders, function(index, value){ 
    var id="randomizr_item_" + i; 
    var temp= $('<div id='+ id +' class="randomizr-grid-items"><img src="'+ data[value].imageSmall[0] +'" /></div>'); 
    me.config.container.append(temp); 
    this.target=$(temp); 
}); 

A simple demo

+0

最差的随机生成过。 – Alexander

+2

@Alexander为什么解释? – thecodeparadox

+0

每个循环你都忘记了你已经选择了一个元素的事实。如果你决定忘记的元素被再次选择,那么你只是在浪费时间。记住*,它会更好。 – Alexander

0

你应该创建一个'甲板'并用json数据填充它。

一旦甲板充满,循环通过它,而它具有的元素,像这样:

while(deck.length > 0) { 
var random_index = Math.floor(Math.random()*data.length); 
var item = deck[random_index]; 
// do stuff with item 
deck = jQuery.removeFromArray(random_index, deck); 
} 

将此代码添加到您的js文件的顶部:

jQuery.removeFromArray = function(value, arr) { 
    return jQuery.grep(arr, function(elem, index) { 
     return elem !== value; 
    }); 
};