Как получить массив уникальных значений конкретного ключа, если у меня есть только массив идентификаторов этого объекта с использованием ES6 - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть магазин, настроенный для списка объектов-кандидатов, подобных этому

const candidatesStore = [
   { id: 1, status: active}
   {id:2, status: inactive}
   {id: 3 status: failed}
   {id: 4 status:inactive}
   {id: 5 status:failed}

    .
    ... and so on ]

У меня есть только список идентификаторов в массиве, ex: requiredArray = [2,3,4]

Как получить список уникальных статусов, просто используя requiredArray, используя ES6 наиболее эффективным способом

Результат должен быть [inactive, failed] Я предпочтительно хочу использовать reduce, чтобы получить уникальное значение, и find, чтобы получить список candidates из candidatesStore

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Попробуйте это.

const candidates = [
    {id: 1, status: "active"},
    {id: 2, status: "inactive"},
    {id: 3, status: "failed"},
    {id: 4, status: "inactive"},
    {id: 5, status: "failed"},
];
let requiredArray = [2,3,4];
let newArray = candidates.filter(x=>requiredArray.includes(x.id))
console.log(newArray);
0 голосов
/ 12 ноября 2018

Вы можете использовать для этого как «уменьшить», так и «фильтр».

Примечание. Мне нужно немного изменить ваш входной объект, так как «кандидат1 = ...» здесь не имеет особого смысла.

const candidates = [
    {id: 1, status: 'active'}
    ,{id: 2, status: 'inactive'}
    ,{id: 3, status: 'failed'}
    ,{id: 4, status: 'inactive'}
    ,{id: 5, status: 'failed'}
]

const requiredArray = [2,3,4]

let result = [...candidates.filter(({ id }) =>  requiredArray.includes(id))
                           .reduce((s, d) => s.add(d.status) , new Set)
             ]

console.log(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...