簡體   English   中英

使用下划線從數組值中過濾json

[英]filter json from array values with underscore

我有一個對象數組,需要在其上創建過濾器。 該列表在JSON中包含一個owner_id屬性...

目前,我只是循環訪問數組中的所有內容,但是該列表不應該使用owner_id等於我的filterarray中的值之一的那些:

var filter = "[14657612, 2215375794]";

            $.ajax({
                url: 'myEndPOint',
                dataType: 'json',
                success: function(data) {
                    var media = data.media;
                    var arr = [];

                    _.filter(media, function(val){
                         //The magic should happen here, only return items that has'nt got an val.owner_id that is in "filter" array
                    });

                    for(i=0; i < media.length; i++) {
                        var thumb = media[i].thumbnail;
                        var html = "<li><img src=" + thumb + " /></li>";
                        arr.push(html);
                    }
                    $(".social-ribbon-target").append(arr);
                    $(".loading").css("display", "none");*/

                },
                error: function(error) {
                    console.log("error");
                }
            });

魔術應該在這里發生

實際上這不是魔術,而是一個返回truefalse的函數,該項目是否應位於返回的數組中。

假設您的過濾器是一個數組,而不是現在的字符串(否則您必須使用filter_arr = JSON.parse(filter)對其進行解析),您可能想要編寫如下的過濾函數:

 var filter = ["one", "two", "three"]; var media = [{owner_id: "one"}]; console.log(_.filter(media, function(item){ return filter.indexOf(item.owner_id) >= 0; })) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 

您定義的filter具有字符串,而不是數組。

更改:

var filter = "[14657612, 2215375794]";

至:

var filter = [14657612, 2215375794];

暫無
暫無

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

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