簡體   English   中英

如何使用JavaScript或Jquery在HTML中制作類似群組的結構

[英]How to make group like structure in HTML using JavaScript or Jquery

我有這樣的數據源

var source = [
    {
        group: "g-one",
        item: "one"
    },
    {
        group: "g-one",
        item: "two"
    },
    {
        group: "g-one",
        item: "three"
    },
    {
        group: "g-two",
        item: "aaa"
    },
    {
        group: "g-two",
        item: "bbb"
    }
];

從這個我需要創建一個像這樣的結構

<div id='g-one'>
    <div>one</div>
    <div>two</div>
    <div>three</div>
</div>
<div id='g-two'>
    <div>aaa</div>
    <div>bbb</div>
</div>

請幫我解決這個問題

jQuery方式

像這樣首先把小組出去:

var groups = $.unique($.map(source, function (n) {
    return n.group;
}));

遍歷groups數組並獲取輸出:

$.each(groups, function (i, data) {
    $("<div/>", {
        "id": data.group,
        "html": function () {
              var elmts = $.grep(source, function (a) {
                return a.group === data;
              });
              return $.map(elmts, function (n) {
                  return "<div>" + n.item + "</div>";
              }).join(" ");
         }
    }).appendTo("body");
});

演示: http : //jsfiddle.net/hungerpain/nZTvp/6/

僅使用JavaScript

使用for循環迭代和創建元素。 要僅獲取字符串,請使用字符串串聯。

    var group = source[0].group;
    var html = "<div id='" + group + "'>";
    var elemts = [];
    for (var i = 0; i <= source.length; i++) {
    if (i !== source.length) {
        if (group === source[i].group) {
            html += "<div>" + source[i].item + " </div>";
        } else {
            html += "</div>";
            elemts.push(html);
            group = source[i].group;
            html = "<div id='" + group + "'><div>" + source[i].item + " </div>";
        }
    } else {
        html += "</div>";
        elemts.push(html);
    }
}

演示: http : //jsfiddle.net/hungerpain/nZTvp/5/

var source = [ { group: "g-one", item: "one" }, { group: "g-one", item: "two" }, { group: "g-one", item: "three" }, { group: "g-two", item: "aaa" }, { group: "g-two", item: "bbb" } ]; 
    var a=new Array(); 
    for(var i=0;i<source.length;i++)
    {
        a[i]=source[i].group;   
    }
    b = {};
    for (var i = 0; i < a.length; i++) 
    {
        b[a[i]] = a[i];
    }
    c = [];
    for (var key in b) 
    {
        c.push(key);
    }
    var message = "";
    for(var i=0;i<c.length;i++)
    {
        message+="<div id = '"+c[i]+"'>"
        for(var j=0;j<source.length;j++)
        {
            if(c[i] == source[j].group)
            {
                message+="<div>"+source[j].item+"</div>";

            }


        }
        message+="</div>";
    }
    alert(message);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM