分布式javascript数组

分布式javascript数组,javascript,jquery,distribution,each,Javascript,Jquery,Distribution,Each,我正试图想出一种方法,将$内构建的数组中的数据附加到ul.featured list <div id="home-page-featured"> <ul class="featured-list"></ul> <ul class="featured-list"></ul> <ul class="featured-list"></ul> </div> 我计算每个ul可能包含的l

我正试图想出一种方法,将
$内构建的数组中的数据附加到
ul.featured list

<div id="home-page-featured">
    <ul class="featured-list"></ul>
    <ul class="featured-list"></ul>
    <ul class="featured-list"></ul>
</div>
我计算每个
ul
可能包含的
li
的数量,如下所示:

<li>
   <a href="http://local.site.com/chocolate-cakes/">
       <img width="186" height="186" src="http://local.site.com/view/img/blank.jpg" />
   </a>
</li>
var amount = Math.floor($(document).width() / 186) + 2;
然后我得到了将使用ajax形成
li
s的内容:

$.ajax({
    url  : '/json/projects/' + (amount * 3),
    type : 'GET',

    success: function(reply, textStatus, jqXHR) {
        var projects = [];
        $.each(reply, function(i, v) {
            if(v['gallery'][0])
            {
                console.log(v['gallery'][0]);
                projects.push(
                    '<li>'
                        +'<a href="/project/'+v['id']+'" title="'+v['name']+'">'
                            +'<img src="/data/images/'+v['gallery'][0].name+'" />'
                        +'</a>'
                    +'</li>'
                );
            }
        });
        console.log(projects);
    }
});
$.ajax({
url:'/json/projects/'+(金额*3),
键入:“GET”,
成功:函数(回复、文本状态、jqXHR){
var项目=[];
$。每个(回复、功能(i、v){
if(v['gallery'][0])
{
console.log(v['gallery'][0]);
项目.推送(
“
  • ” +'' +“
  • ” ); } }); console.log(项目); } });
    现在剩下的唯一难题是,如何在我所有的
    ul.特色列表中重新分配
    li
    s内
    projects

    <div id="home-page-featured">
        <ul class="featured-list"></ul>
        <ul class="featured-list"></ul>
        <ul class="featured-list"></ul>
    </div>
    
    假设每个
    ul.featured list
    可能包含的最大
    li
    s为10,那么如果
    projects
    包含11个
    li
    s,那么10将转到第一个
    ul.featured list
    并在第二行继续,依此类推

    我的想法:
    • $。对于
      ul
      s的each()
      将不起作用,因为将重复内容
    • 我可以尝试将内容添加到第一个
      ul
      ,当它达到
      数量时停止,并删除已经添加的内容,然后使用第二个
      ul
      继续此过程,但我认为这不是一种优雅的方式
    那么,你认为呢?你对解决这个问题有什么建议

    更新 这是我目前使用的解决方案,但我觉得没有那么有效。。。如何进行优化?

    我认为如果您保持代码的优化,您的解决方案是非常有效和可接受的。我的意思是,每次在循环中调用
    $('ul.featured list')
    时,您可以将其缓存在某个变量中,然后使用该变量

    或者,您可以将附加逻辑移动到另一个
    函数
    中,并在
    循环
    中调用该
    函数
    ,方法是以数组的形式传递它的元素和将这些项附加到的
    ul元素

    对我来说,你已经朝着正确的方向前进了:-)


    您可以在
    array
    对象上使用
    slice
    方法从
    array
    中切片元素,同时仍保留原始
    array

    我认为如果您保持代码优化,您的解决方案是非常有效和可接受的。我的意思是,每次在循环中调用
    $('ul.featured list')
    时,您可以将其缓存在某个变量中,然后使用该变量

    或者,您可以将附加逻辑移动到另一个
    函数
    中,并在
    循环
    中调用该
    函数
    ,方法是以数组的形式传递它的元素和将这些项附加到的
    ul元素

    对我来说,你已经朝着正确的方向前进了:-)

    您可以在
    array
    对象上使用
    slice
    方法从
    array
    中切片元素,同时仍保留原始
    array

    尝试以下操作

    var arrayToFill = [...];  
    
    $("ul.list").each(function (index) {  //  loop through all <ul> items
        $(this).find("li").each(function (index) { //  loop through all  <li> items inside
            $(this).html(arrayToFill.shift()); // fill & delete one on each turn
        });
    });
    
    var arrayToFill=[…];
    $(“ul.list”)。每个(函数(索引){//循环遍历所有
      项 $(this).find(“li”).each(函数(索引){//循环遍历其中的所有
    • 项 $(this.html(arrayToFill.shift());//每回合填充并删除一个 }); });
    示例:

    试试这个

    var arrayToFill = [...];  
    
    $("ul.list").each(function (index) {  //  loop through all <ul> items
        $(this).find("li").each(function (index) { //  loop through all  <li> items inside
            $(this).html(arrayToFill.shift()); // fill & delete one on each turn
        });
    });
    
    var arrayToFill=[…];
    $(“ul.list”)。每个(函数(索引){//循环遍历所有
      项 $(this).find(“li”).each(函数(索引){//循环遍历其中的所有
    • 项 $(this.html(arrayToFill.shift());//每回合填充并删除一个 }); });

    示例:

    @w0rldart:我的荣幸。我已经更新了我的答案。请看一看。谢谢。@w0rldart:我的荣幸。我已经更新了我的答案。请看一看。谢谢。您的建议效率更高,因为编写的代码更少,但它有一个错误,即在从一个
    ul
    交换到另一个
    li
    时,将跳过要附加到
    li
    的下一个数据。。。在本例中,它是
    银河
    hihihi
    无论如何,我建议对您的答案进行编辑,使用不完整的工作版本。我的错误是,必须切换'while'子句中的参数,因此如果达到10,它将不会“移位”。现在它可以工作了,如果你已经阅读了我对你的帖子的建议,你会发现我不需要附加,我需要修改
    li
    的值。。。这里的代码更糟糕。对不起,我是新来的。我在哪里可以找到这个建议?顺便说一句,我甚至不知道它的存在。你的建议,写的代码更少,效率更高,但它有一个错误,即在从一个
    ul
    交换到另一个
    li
    时,将跳过要附加到
    li
    的下一个数据。。。在本例中,它是
    银河
    hihihi
    无论如何,我建议对您的答案进行编辑,使用不完整的工作版本。我的错误是,必须切换'while'子句中的参数,因此如果达到10,它将不会“移位”。现在它可以工作了,如果你已经阅读了我对你的帖子的建议,你会发现我不需要附加,我需要修改
    li
    的值。。。这里的代码更糟糕。对不起,我是新来的。我在哪里可以找到这个建议?顺便说一句,我甚至不知道它的存在。