Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据具有复杂/嵌套属性的json对象数组查找特定记录_Javascript_Angularjs_Underscore.js - Fatal编程技术网

Javascript 如何根据具有复杂/嵌套属性的json对象数组查找特定记录

Javascript 如何根据具有复杂/嵌套属性的json对象数组查找特定记录,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我尝试使用下划线从ajax响应中过滤出对象,稍后angualr js应用程序将使用这些对象。以下是来自服务器(对象数组)的响应 数组中的每个对象都是一个事件,其中附加了一些用户。我的angular应用程序中有两个按钮,一个显示所有事件,另一个只显示事件的用户属性与当前用户匹配的事件。例如,当前用户的id为2。然后,当他单击“我的事件”按钮时,只应列出2个事件 我在angualr js过滤器内工作,该过滤器与ng repeat链接,让我在这里分享 iFinder.filter('myevent',

我尝试使用下划线从ajax响应中过滤出对象,稍后angualr js应用程序将使用这些对象。以下是来自服务器(对象数组)的响应

数组中的每个对象都是一个事件,其中附加了一些用户。我的angular应用程序中有两个按钮,一个显示所有事件,另一个只显示事件的用户属性与当前用户匹配的事件。例如,当前用户的id为2。然后,当他单击“我的事件”按钮时,只应列出2个事件

我在angualr js过滤器内工作,该过滤器与ng repeat链接,让我在这里分享

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;
    };
});