当前位置: 首页 > 知识库问答 >
问题:

角键值管道排序属性/按顺序迭代

戚兴思
2023-03-14

当使用Angular keyvalue管道遍历对象的属性时,如下所示:

<div *ngFor="let item of object | keyvalue">
  {{item.key}}:{{item.value}}
</div>

我遇到过一个问题,即属性没有按照预期的顺序迭代。这条评论表明,我不是唯一一个经历过这个问题的人:

如何在Angular中使用ngFor循环对象属性

共有1个答案

段干宾白
2023-03-14

根据Angular文档,keyvalue管道默认情况下按key顺序对项进行排序。您可以提供比较器函数来更改该顺序,并根据或对象中属性的输入顺序对项进行排序。

以下比较器函数按不同的顺序对项进行排序:

// Preserve original property order
originalOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
  return 0;
}

// Order by ascending property value
valueAscOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
  return a.value.localeCompare(b.value);
}

// Order by descending property key
keyDescOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
  return a.key > b.key ? -1 : (b.key > a.key ? 1 : 0);
}

当应用于keyvalue管道时:

<div *ngFor="let item of object | keyvalue: originalOrder">
  {{item.key}} : {{item.value}}
</div>

<div *ngFor="let item of object | keyvalue: valueAscOrder">
  {{item.key}} : {{item.value}}
</div>

<div *ngFor="let item of object | keyvalue: keyDescOrder">
  {{item.key}} : {{item.value}}
</div>
<!-- The following syntaxes preserve the original property order -->
<div *ngFor="let item of object | keyvalue: 0">
<div *ngFor="let item of object | keyvalue: 374">
<div *ngFor="let item of object | keyvalue: null">

<!-- but they cause an exception (visible in the console) -->
ERROR TypeError: The comparison function must be either a function or undefined
 类似资料:
  • 问题内容: 我正在尝试按属性对一些数据进行排序。这是我tought应该可以工作的示例,但事实并非如此。 HTML部分: JS部分: 结果: A-> AData B-> BData C-> C数据 …恕我直言,应如下所示: C-> C数据 B-> BData A-> AData 我是否错过了某些东西(可以在这里进行JSFiddle的实验)? 问题答案: AngularJS的orderBy过滤器仅支持

  • 我有一个Linkedhasmap并有键和值 现在我想按值对映射进行排序,键和值应该如下所示 请告知

  • 问题内容: 我有一个HashMap,每次我获得迭代器时,我都希望以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前对地图进行“混洗”(或者,如果需要,可以对迭代器进行“混洗”)。 我有两种选择: 1)使用LinkedHashMap的方法,并在内部保留条目列表,将其随机洗净,并在调用迭代器时返回该视图。 2)使用map.entrySet(),构造一个ArrayList并在其上使用sh

  • 问题内容: 我需要一个Map,它可以 按其值 的降序进行迭代。是否有像Apache Commons或Guava这样的标准库提供这种地图? 问题答案: 我会用番石榴来做到这一点,如下所示:

  • 问题内容: 当前,我的项目使用,因此当我按此列排序时,它是根据中的顺序进行排序的,效果很好。但是我需要在中添加一些附加值,这些附加值需要插入到枚举值列表中的不同位置,并且不能仅仅添加到底部以保持正确的排序顺序。 如果这样做,我的数据库将会混乱。我将不得不编写一些脚本来将所有这些序数值转换为正确的新序数。有可能以后必须添加更多状态。由于必须修复数据库中的所有数据,因此只需要执行一次,因为这将是一项艰