0

私はこれを持っているので、タイトルはばかげています:)これが可能かどうかはわかりませんが、尋ねなければなりません..AngularjsでJSONでng-repeatを使用していますが、取得するのはこれらの値のリストです..

 <ul>
     <li class="name">Nokia</li>
     <li class="name">Nokia</li>
     <li class="name">Nokia</li>
     <li class="name">ZTE</li>
     <li class="name">ZTE</li>
     <li class="name">Samsung</li>
     <li class="name">Samsung</li>
     <li class="name">ZTE</li>
</ul>

だから、このリストから私はこのようなものを作りたい

<ul>
 <li class="name">Nokia</li>
 <li class="name">ZTE</li>
 <li class="name">Samsung</li>
</ul>

jQueryで何かを試しましたが、成功しませんでした...私の質問は、これは可能ですか?可能であれば、何か提案はありますか?

OK、あなたは私のJSONを見たいと言っていますが、@nnnnnnはすでに私の問題を解決しています.. )

var store = [
                    {
                        "category": "mobile",
                        "description": "Mobile Phones",
                        "products" : 
                        [


                            {"manufacturer": "Nokia", "name":"Nokia 301", "price": 100, "quantity": 0, "img": "nokia301-front"},
                            {"manufacturer": "ZTE", "name":"ZTE FTV", "price": 300, "quantity": 0, "img": "zteftv-front"},
                            {"manufacturer": "ZTE", "name":"ZTE Blade 3", "price": 500, "quantity": 0, "img": "zteblade3-front"},
                            {"manufacturer": "Sony", "name":"Sony Xperia E", "price": 600, "quantity": 0, "img": "sonyxperiae-front"},
                            {"manufacturer": "Samsung", "name":"Samsung Galaxy Ace Plus", "price": 300, "quantity": 0, "img": "samsunggalaxyaceplus-front"},
                            {"manufacturer": "ZTE", "name":"ZTE Blade G", "price": 350, "quantity": 0, "img": "ztebladeg-front"},
                            {"manufacturer": "LG", "name":"LG Optimus L7 II", "price": 600, "quantity": 0, "img": "lgoptimusl7ii-front"},
                            {"manufacturer": "HTC", "name":"HTC Desire X", "price": 500, "quantity": 0, "img": "htcdesirex-front"},
                            {"manufacturer": "Nokia", "name":"Nokia Lumia 620", "price": 500, "quantity": 0, "img": "nokialumia620-front"}
                        ]
                    },
                    {
                        "category": "laptop",
                        "description": "Laptops",
                        "products" : 
                            [
                                {"name":"Asus X55A", "price": 400, "quantity": 0, "img": "asusx55a-front"},
                                {"name":"Samsung Series 9", "price": 500, "quantity": 0, "img": "samsungseries9-front"}
                            ]
                    },
                    {
                        "category": "tablets",
                        "description": "Tablet Devices",
                        "products" : 
                        [
                            {"name":"Prestigio Touch", "price": 270, "quantity": 0, "img": "prestigiotouch-front"},
                            {"name":"Samsung Galaxy Tab 2 7.0", "price": 400, "quantity": 0, "img": "samsunggalaxytab270-front"},
                            {"name":"Samsung Galaxy Note 10.1", "price": 430, "quantity": 0, "img": "samsunggalaxynote101-front"}
                        ]
                    }
                ];
4

3 に答える 3

1

純粋でばかげた jQuery ソリューション:

var names = [];
$("ul li").each(function(){
    if($.inArray($(this).text(), names) != -1){
        $(this).remove();
    }else{
        names.push($(this).text());
    }
});

このjsfiddleで試してみてください

おそらくバックエンドでリストを一意にするほうがよいでしょうが、それはデータの作成方法によって異なります。

于 2013-07-16T12:59:44.457 に答える
1

それが私のコードであれば、html要素を作成する前にデータから重複を削除します。ただし、JavaScript や JSON 構造を表示していないため、html から重複を削除する方法しか提供できません。

var names = {};
$("ul li").filter(function() {
    var name = $(this).text();
    if (name in names)
        return true;
    names[name] = true;
    return false;
}).remove();

デモ: http://jsfiddle.net/C88Uj/

私が使用した jQuery 関数がどのように機能するかわからない場合は、どこを見ればよいかがわかります。

于 2013-07-16T12:59:54.047 に答える
0

Angular-UI が提供する独自のフィルターを使用することもできます

<ul>
    <li ng-repeat="item in items | unique:attribute">{{ item.attribute }}</li>
</ul>

http://angular-ui.github.io/

于 2013-07-16T13:25:26.440 に答える