首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对来自Angular http get api调用的数据进行排序

对来自Angular http get api调用的数据进行排序
EN

Stack Overflow用户
提问于 2017-06-23 19:56:57
回答 1查看 7.1K关注 0票数 5

这看起来应该是一件非常微不足道的事情,但我真的在努力为一个简单的问题找出一个整洁而简单的解决方案。

我对服务的http.get(...角度调用返回了一个可观察对象--它是一个T项流(在我使用response.json()映射之后)

Observable是我的组件上的一个属性。我在组件模板中有一个<select>元素,其中包含通过模板中的*ngFor="let item of myObservable | async"代码创建的<option>元素。

这创建了一个很好的select元素,其中包含我希望在浏览器中很好地显示的所有值:)

现在有人要求我按字母顺序对select语句中的选项进行排序。

我不想创建一个排序管道,因为Angular团队不建议这样做,而且看起来观察值本质上是不可排序的。

我试图将可观察到的结果转换为简单的结果数组-但这似乎也是不可能的。

那么我该如何实现这个简单的事情呢?我的JSON服务返回20个左右的JSON对象,我似乎不知道如何根据它们的某个属性对它们进行排序。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-06-23 20:40:50

好的,我已经解决了(如果有人感兴趣的话;

我在服务中的原始代码是这样的:

代码语言:javascript
运行
复制
  public getAllItems(): Rx.Observable<DataItem> {
    var returnVar = this.http.get("http://localhost:8090/api/rest/dataitem")
      .map(res => {
        return res.json()
      });
    return returnVar;

但随后我将可观察对象更改为数组类型的可观察对象,并在map中对其进行排序

代码语言:javascript
运行
复制
public getAllItems(): Rx.Observable<DataItem[]> {
    var returnVar = this.http.get("http://localhost:8090/api/rest/dataitem")
      .map(res => {
          var ret = <DataItem[]>res.json();
          ret.sort((a,b) => a.name < b.name ? -1 : 1);
          return ret;
      } );

我没有意识到您可以将响应对象转换为单个项或整个数组。

感谢所有试图帮助我们的人。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44720903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档