Vue.js VueX Getter可过滤唯一id';从数组中删除

Vue.js VueX Getter可过滤唯一id';从数组中删除,vue.js,vuejs2,vuex,getter,Vue.js,Vuejs2,Vuex,Getter,我想筛选一个数组(包含对象),以获取包含唯一对应id的每条消息 **存储包含“消息”(具有此结构): Getters我想过滤它的地方 getCorrespondedUsers: (state) => { return state.messages.unique } 这些消息都包含一个通信id,但是现在我只能抓取所有消息,但我只想抓取唯一的人。这样做的目的是我有消息,但在左边我想显示我发过消息的每个人(但我不确定如何只能显示每个人一次) 我如何过滤我的邮件,以便只

我想筛选一个数组(包含对象),以获取包含唯一
对应id
的每条消息

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

Getters我想过滤它的地方

getCorrespondedUsers: (state) => {
        return state.messages.unique
    }
这些消息都包含一个
通信id
,但是现在我只能抓取所有消息,但我只想抓取唯一的人。这样做的目的是我有消息,但在左边我想显示我发过消息的每个人(但我不确定如何只能显示每个人一次)

我如何过滤我的邮件,以便只返回具有唯一的
通信id的每条邮件?

这是一个问题

所以你可以这样做:

getCorrespondedUsers: (state) => {
        return state.messages.filter((obj, pos, arr) => {
           return arr.map(mapObj => mapObj["corresponde_id"]).indexOf(obj["corresponde_id"]) === pos;
    });
}
我做了测试

我希望它能起作用

这个问题有很多原因

所以你可以这样做:

getCorrespondedUsers: (state) => {
        return state.messages.filter((obj, pos, arr) => {
           return arr.map(mapObj => mapObj["corresponde_id"]).indexOf(obj["corresponde_id"]) === pos;
    });
}
我做了测试


我希望它能起作用

您可以使用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')
}

您可以使用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')
}

如果您正在使用,您可以尝试使用@MarlonBarcarol,它不知道我在使用lodash,效果非常好,谢谢。如果您正在使用,您可以尝试使用@MarlonBarcarol,它不知道我在使用lodash,效果非常好,谢谢。