Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Angularjs ng使用自定义过滤器重复不';t按预期工作:未显示任何值_Angularjs_Arrays_Filter - Fatal编程技术网

Angularjs ng使用自定义过滤器重复不';t按预期工作:未显示任何值

Angularjs ng使用自定义过滤器重复不';t按预期工作:未显示任何值,angularjs,arrays,filter,Angularjs,Arrays,Filter,我创建了这个自定义过滤器,它应该接受一个具有job和name属性的对象数组,并返回一个关联数组,该数组将job作为键,以及一个名称数组,该数组将job作为值共享 angular.module('myApp') .filter('groupBy', function(){ return function(input){ if (!input || !input.length) { return; } var out = new

我创建了这个自定义过滤器,它应该接受一个具有job和name属性的对象数组,并返回一个关联数组,该数组将job作为,以及一个名称数组,该数组将job作为共享

angular.module('myApp')
    .filter('groupBy', function(){
        return function(input){
            if (!input || !input.length) { return; }
            var out = new Array();
            for (var crew of input){
                if(typeof out[crew.job] === 'undefined'){
                    out[crew.job] = new Array();
                }
                out[crew.job].push(crew.name);
            }           
            console.log(out);
            return out;
        }
    });
console.log的结果:

Assistant Director: ["P.J. Voeten"]

Director: ["George Miller"]

Script Supervisor: ["Sophie Fabbri-Jackson"]

Writer: ["Nick Lathouris", "George Miller", "Brendan McCarthy"]
然后我打算遍历数组并按如下方式打印它:

<li ng-repeat="(key, value) in cast.crew | groupBy">
    <span class="bold">{{key}}:</span> 
    <span ng-repeat="name in value">{{name}}</span>
</li>
  • {{key}}: {{name}}

  • filter函数中的console.log显示数组是按预期创建的,但它不会显示在视图中,也不会显示错误消息

    多亏了@GabrieleCiech,我才设法解决了这个问题——问题是将filter函数中的
    out
    变量实例化为数组,然后尝试在视图中作为json对象访问它。当我更改
    var out=new Array()时
    var out=new Object()
    它开始以inted方式工作。

    多亏了@GabrieleCiech,我才设法解决了这个问题-问题是将filter函数中的
    out
    变量实例化为数组,然后尝试在视图中作为json对象访问它。当我更改
    var out=new Array()时
    var out=new Object()它开始以inteded方式工作。

    如果尝试在视图{{cast.crew | json}中添加输出是什么?我收到了此错误(视图中没有更改):错误:[ngRepeat:dupes]中继器中不允许重复。使用“跟踪依据”表达式指定唯一关键点。Repeater:(key,value)在cast.crew | json中,重复key:string:,重复value:(…)将其添加到for循环上方的新行中,如{{cast.crew | json}}对,对不起;它输出如下数组:[{“credit_id”:“53d451210e0a262841002dd1”,“department”:“Writing”,“id”:1027146,“job”:“Writer”,“name”:“Nick Lathouris”,“profile_path”:null},{“credit_id”:“52fe4933c3a36844e11f76f”,“department”:“Directing”,“id”:20629,“job”:“Director”,“name”:“George Miller”,“profile_path”:“/smrCjoAwYyn91uBngUWHrak12MD.jpg”},(…)]您收到的数据似乎是正确的。应用过滤器后的输出是什么?例如{cast.crew | groupBy | json}?这很奇怪。如果您试图在视图{cast.crew | json}中添加什么输出?我得到了这个错误(视图中没有更改):错误:[ngRepeat:dupes]中继器中不允许重复。请使用“track by”表达式指定唯一的键。中继器:(键,值)在cast.crew|json中,重复键:string:,重复值:(…)将其添加到for循环上方的新行中,如{cast.crew|json}对,抱歉;它输出如下数组:[{“credit u id”:“53d451210e0a262841002dd1”部门“:”写作“,”id“:”1027146,“职务“:”作者“,”姓名“:”尼克·拉图里斯“,”个人资料“:”空“,”信用证“:”52fe4933c3a368484e11f76f“,”部门“,”导演“,”id“:”20629,“职务“:”导演“,”姓名“:”乔治·米勒“,”个人资料“:”/smrCjoAwYyn91uBngUWHrak12MD.jpg“,”,(…)]您收到的数据似乎是正确的。应用过滤器后的输出是什么?比如{{cast.crew | groupBy | json}?这很奇怪。