我有一个需要在其上创建过滤器的对象数组。该列表包含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");
}
});
答案 0 :(得分:0)
魔法应该在这里发生
它实际上不是魔术,而是一个返回true
或false
的函数,无论该项是否应该在返回的数组中。
假设你的过滤器是一个数组,而不是现在的字符串(否则你必须用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;
}))
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
&#13;
答案 1 :(得分:0)
您定义的filter
有一个字符串,而不是数组。
变化:
var filter = "[14657612, 2215375794]";
要:
var filter = [14657612, 2215375794];