【问题标题】:Angular Sort Array Object by value inside object按对象内的值对数组对象进行角度排序
【发布时间】:2019-06-10 07:38:13
【问题描述】:

如何通过过滤对象内部的键值来获取对象?我有下面的对象,我只需要提取具有 session_id:23 的数据

数据 = [{ name: "拳名", session_id:“23”, 登录:“日期” }, { name: "第二个名字", session_id:“18”, 登录:“日期” }, { name: "第三个名字", session_id:“23”, 登录:“日期” }];

I tried Angular Filter and Map method to filter this out but dosent seem to work for me here.
.pipe(
    map((res) => {
        res => res.filter(res => res.season_id == 23)
        console.log(res);
    })
)

ngOnInit() {
    this._service.getData();
    this._service.updatedPlayer
        .pipe(
            map((res) => {
                res => ress.filter(res => res.season_id == 23)
                console.log(res);
            })
        )
        .subscribe(
            (playerSession) => {
                this.playerSessionUpdate = playerSession;
            }
        )

}

【问题讨论】:

    标签: javascript html json angular angular6


    【解决方案1】:

    我认为您将数组与流混淆了。

    你需要使用Array的filter方法,而不是observables的filter操作符。 因此,如果 this._service.updatedPlayer 包含您的可观察数据流,请执行以下操作:

    this._service.updatedPlayer.subscribe(data => {
      this.playerSessionUpdate = data.filter(res => res.season_id == 23);
    }
    

    this.playerSessionUpdate 现在将包含您过滤的数据。

    【讨论】:

    • 那是我的错误,这里要注意数组和流/可观察对象。感谢您的帮助弗雷德里克
    【解决方案2】:

    你的管道方法map 必须返回一些东西。所以你实际上应该这样做

     map((res) => {
              return res.filter(res => res.season_id === 23)
         })
    

    【讨论】:

    • 这个剂量对我也有用,这个输出使函数像这样:function (ress) { return ress.filter(function (ress) { return ress.season_id == 23; }); }
    • 但我不明白“ress”变量的来源。在您的示例中,您有一个“res”和一个“ress”。是错字吗?请澄清,以便我可以尝试提供更多帮助:D
    • 它只有先生,我们可以过滤这个它似乎无法用这个代码过滤。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多