角度过滤器分组依据过滤器返回一个“未定义”字段

angular-filter groupby filter returns an "undefined" field

本文关键字:过滤器 未定义 一个 字段 返回      更新时间:2023-09-26

我正在分组一个大的json数组。它有效,但在数组的末尾,我得到了一个"未定义"的类别。

'The University and Jepson Herbaria
- California Herbs Collection
University of California Museum of Paleontology
- UCMP Vertebrate Collection
undefined
-
-

我很难弄清楚这是从哪里来的。这是我正在使用的代码。

<div ng-repeat="(key,value) in datasources | groupBy: 'institution'" > {{ key }}
    <li ng-repeat="collection in value">
        {{ collection.name }}
    </li>
</div>

有什么想法吗?

我认为这可能是这家伙遇到的问题的混合,但我并没有完全关注这个问题——我是角度和 js 的新手:角度类型提前过滤器错误"未定义不是函数"

更新:当我 collection.name 更改为集合时(所以我只是转储键的值)

<div ng-repeat="(key,value) in datasources | groupBy: 'institution'" > {{ key }}
    <li ng-repeat="collection in value">
        {{ collection }}
    </li>
</div>

我得到:

'The University and Jepson Herbaria
- (...long value...)
University of California Museum of Paleontology
- (...long value...)
undefined
- {}
- true

就像它循环播放所有内容,但还有 2 件额外的事情。groupBy 函数的源代码如下: https://github.com/a8m/angular-filter/blob/master/src/_filter/collection/group-by.js

不过,我对 js 的能力不足以做出正面或反面。

感谢@james的帮助!!我被困了一整天。

我正在使用工厂来返回一个 json 对象。完成此操作后,其他一些东西就会被附加。为什么角度$resource向我的数据响应添加额外的对象($promise、$resolve...)?

关键是$promise,$resolved得到回报。如果你循环使用新对象,这些对象就会随之而来。

要去除 Angular 添加的变量并只处理您的数据,请使用:angular.toJson。然后使用 JSON.parse 将其转回 json 对象。

$scope.datasources = JSON.parse(angular.toJson(data))