VueX Getter 从数组中过滤唯一 id

Posted

技术标签:

【中文标题】VueX Getter 从数组中过滤唯一 id【英文标题】:VueX Getter to filter unique id's from array 【发布时间】:2019-01-14 10:46:25 【问题描述】:

我想过滤一个数组(包含对象),以获取包含唯一correspondence_id 的每条消息。

**Store 包含“消息”(具有此结构):

Getters 我想过滤它。

getCorrespondedUsers: (state) => 
        return state.messages.unique
    

消息都包含correspondence_id,但是现在我只能抓取所有消息,但我只想抓取独特的人。这样做的目的是我有消息,但在左侧我想显示我发过消息的每个人(但我不确定我如何只能显示每个人一次)。

如何过滤我的消息以仅返回带有唯一 correspondence_id 的每条消息?

【问题讨论】:

如果你使用Lodash,你可以试试_.uniqBy @MarlonBarcarol 没有意识到我在使用 lodash,它工作得很好,谢谢。 【参考方案1】:

您可以使用 lodash 来保持代码的可读性。示例:

// don't forget to import only what
// you really need, not the whole library
import uniqBy from 'lodash/uniqBy'

export default 
  getCorrespondedUsers: state => uniqBy(state.messages, 'correspondence_id')

【讨论】:

【参考方案2】:

有一个solution 这个问题。

所以你可以这样做:

getCorrespondedUsers: (state) => 
        return state.messages.filter((obj, pos, arr) => 
           return arr.map(mapObj => mapObj["corresponde_id"]).indexOf(obj["corresponde_id"]) === pos;
    );

我测试了here。

我希望它有效!

【讨论】:

以上是关于VueX Getter 从数组中过滤唯一 id的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vue/vuex 从输入中过滤数据?

根据时间戳条件过滤数组中的唯一对象

尝试使用过滤器设置具有唯一值的数组失败

vuex项目框架

vuex使用

Vuex,命名空间的模块获取器在根获取器中不可用?