Javascript 如何根据具有复杂/嵌套属性的json对象数组查找特定记录
我尝试使用下划线从ajax响应中过滤出对象,稍后angualr js应用程序将使用这些对象。以下是来自服务器(对象数组)的响应 数组中的每个对象都是一个事件,其中附加了一些用户。我的angular应用程序中有两个按钮,一个显示所有事件,另一个只显示事件的用户属性与当前用户匹配的事件。例如,当前用户的id为2。然后,当他单击“我的事件”按钮时,只应列出2个事件 我在angualr js过滤器内工作,该过滤器与ng repeat链接,让我在这里分享Javascript 如何根据具有复杂/嵌套属性的json对象数组查找特定记录,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我尝试使用下划线从ajax响应中过滤出对象,稍后angualr js应用程序将使用这些对象。以下是来自服务器(对象数组)的响应 数组中的每个对象都是一个事件,其中附加了一些用户。我的angular应用程序中有两个按钮,一个显示所有事件,另一个只显示事件的用户属性与当前用户匹配的事件。例如,当前用户的id为2。然后,当他单击“我的事件”按钮时,只应列出2个事件 我在angualr js过滤器内工作,该过滤器与ng repeat链接,让我在这里分享 iFinder.filter('myevent',
iFinder.filter('myevent', function (iFinderFactory) {
return function (event) {
console.log("filter in action", iFinderFactory);
var user = iFinderFactory.getUser();
console.log("filter user is =", user);
//console.log("underscore = ", underscore);
//console.log("evenst:");
//console.log(event);
//var eUsers = event.users || [];
//if (eUsers && eUsers.length > 0) {
// console.log(event);
// return event;
//}
var myEvents = [];
var gg = _.filter(event, function (e) {
return _.where(e.users, { id: 3 });
//return e.users.length > 0;
//_.each(e.users,function (el, index, list) {
// console.log("single e:", el);
// if (el.id == user.Id) {
// myEvents.push(e);
// }
// else {
// }
//});
//window.najams = myEvents;
//return myEvents;
});
event = gg;
return event;
};
});
Ng重复
<div class="result" ng-repeat="r in results | myevent">
<h3>{{r.name}}</h3>
</div>
您的过滤器应如下所示:
iFinder.filter('myevent', function () {
return function (event) {
var myEvents = [];
console.log("filter in action", iFinderFactory);
var user = iFinderFactory.getUser();
console.log("filter user is =", user);
//assuming user.id is the id of the user in event.users
var filtered = _.filter(event, function (e) {
return _.where(e.users, { id: user.id }).length > 0;
});
return filtered;
};
});
我试着为您制作一把工作小提琴您的过滤器应该是这样的:
iFinder.filter('myevent', function () {
return function (event) {
var myEvents = [];
console.log("filter in action", iFinderFactory);
var user = iFinderFactory.getUser();
console.log("filter user is =", user);
//assuming user.id is the id of the user in event.users
var filtered = _.filter(event, function (e) {
return _.where(e.users, { id: user.id }).length > 0;
});
return filtered;
};
});
我试着给你做一把小提琴
iFinder.filter('myevent', function () {
return function (event) {
var myEvents = [];
console.log("filter in action", iFinderFactory);
var user = iFinderFactory.getUser();
console.log("filter user is =", user);
//assuming user.id is the id of the user in event.users
var filtered = _.filter(event, function (e) {
return _.where(e.users, { id: user.id }).length > 0;
});
return filtered;
};
});