2013-08-26 64 views
0

所以我有一個返回職位列表的JSON供稿。我想分手的分析數據,以便它們被分成因此,例如,現在我所有附加的那些成HTML,看起來像的3節點:如何將數組拆分爲多維數組?

<div class="slide"> 
    <div class="jobs-list"> 
    <a href="#" class="job">Title 1</a> 
    <a href="#" class="job">Title 2</a> 
    <a href="#" class="job">Title 3</a> 
    <a href="#" class="job">Title 4</a> 
    <a href="#" class="job">Title 5</a> 
    </div> 
</div> 

我想輸出看像:

<div class="slide slide1"> 
    <div class="jobs-list"> 
    <a href="#" class="job">Title 1</a> 
    <a href="#" class="job">Title 2</a> 
    <a href="#" class="job">Title 3</a> 
    </div> 
</div> 
<div class="slide slide2"> 
    <div class="jobs-list"> 
    <a href="#" class="job">Title 4</a> 
    <a href="#" class="job">Title 5</a> 
    </div> 
</div> 

這是我目前的JS

$.get('sample-json/9.json', function (data) { 
    var data = $.parseJSON(data); 
    console.log(data); 

    if (data.result.length === 0) { 
    alert("No Data. Show Error Screen."); 
    } else { 
    count = 0; 
    count++; 
    $("#careers .slides").append('<div class="slide slide' + count + '"></div>'); 
    $('.slide' + count).append('<div class="jobs-list"></div>'); 

    $(data.result).each(function (i, d) { 
     $('.slide' + count).find(".jobs-list").append(
     '<a class="job cf" href="#">'+ d.type + '</a>'); 
    }); 

    } 
}); 

,我應該如何去這樣做的任何指針?

+2

只需用'if(index%3 == 0)'迭代它就可以創建一個新的組,並開始在每個第三項上插入。 –

+0

請顯示一個嘗試,以便我們能夠理解您遇到的問題 –

+2

這個問題似乎與JSON沒有任何關係,但與如何處理JavaScript數組有關。 –

回答

2

你知道模運算符嗎? http://en.wikipedia.org/wiki/Modulo_operation

var currentBlock; 
jobs.each(function(i, d){ 
    if(i % 3 == 0){ 
    //make a new block 
    currentBlock = ... 
    $("#careers .slides").append(currentBlock) 
    } 
    // add stuff to the current block 
    currentBlock.append(...) 
}) 
0

如果你處理你的JSON到這個HTML結構(類似於您已經做了):

<div class="slides"> 
    <a href="#" class="job">Title 1</a> 
    <a href="#" class="job">Title 2</a> 
    <a href="#" class="job">Title 3</a> 
    <a href="#" class="job">Title 4</a> 
    <a href="#" class="job">Title 5</a> 
</div> 

然後你可以事後操縱它到你想要的結構,使用此JS:

var count = 1; 
while ($("div.slides > a.job").length) { 
    $("div.slides").append("<div class='slide slide" + count + "'></div>"); 
    for (var i = 0; i < 3; i++) { 
     $("div.slides > a.job:first").appendTo($("div.slide" + count)); 
    } 
    count++; 
} 
$("div.slide").wrapInner("<div class='jobs-list'></div>"); 

小提琴:http://jsfiddle.net/Vcjs4/

0

我能夠使用模數運算符來解決問題。

$.get('sample-json/9.json', function(data) { 
    var data = $.parseJSON(data); 

    if(data.result.length === 0) { 
    alert("No Data. Show Error Screen."); 
    } else { 
    count = 0; 
    $(data.result).each(function(i,d){ 
     if(i % 6 == 0){ 
     count++; 
     $("#careers .slides").append('<div class="slide slide' + count + '"></div>'); 
     $('.slide' + count).append('<div class="jobs-list"></div>'); 
     } 
     $(".slide" + count).find(".jobs-list").append( 
     '<a class="job cf" href="#" target="_blank">' + d.title + '</a>' 
    ); 
    }); 
    } 
});