Как получить все значения из нескольких ключей массива объекта? - PullRequest
0 голосов
/ 03 ноября 2018

Мне нужно получить значения из нескольких ключей из массива объекта.

trip = [
    {sp: 'cbe', ep: 'tpr'}, 
    {sp: 'tpr', ep: 'erd'}, 
    {sp: 'erd', ep: 'blr'}
];

Выход должен быть ["cbe", "tpr", "erd", "blr"]

то, что я пробовал, опубликовано как ответ, и оно работает, но я использовал две карты, чтобы получить желаемый результат. Я знаю, что должен быть способ лучше моего ответа.

Вот мой код на стеке

Ответы [ 4 ]

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

Вот еще один способ: (обновлено для агрегирования всех ключей вместо явных ключей)

const trip = [
    {sp: 'cbe', ep: 'tpr'}, 
    {sp: 'tpr', ep: 'erd'}, 
    {sp: 'erd', ep: 'blr'}
];

const t = Array.from(trip.reduce((a, el) => {
    for (let key in el) a.add(el[key]);
    return a;
}, new Set()));

console.log(t);
0 голосов
/ 03 ноября 2018

Если ты О.К. с не так много читаемой однострочник ...

trip = [{
    sp: 'cbe',
    ep: 'tpr'
  },
  {
    sp: 'tpr',
    ep: 'erd'
  },
  {
    sp: 'erd',
    ep: 'blr'
  }
];

const res = [...new Set([].concat.apply([], trip.map(item => Object.values(item))))];

console.log(res);
0 голосов
/ 03 ноября 2018

Новая функция flatMap может использоваться здесь, но помните об ограниченной поддержке браузера

trip = [
    {sp: 'cbe', ep: 'tpr'}, 
    {sp: 'tpr', ep: 'erd'}, 
    {sp: 'erd', ep: 'blr'}
];

res = [ ...new Set(   trip.flatMap(Object.values)    )]

console.log(res)
0 голосов
/ 03 ноября 2018

    const trip = [
        {sp: 'cbe', ep: 'tpr'}, 
        {sp: 'tpr', ep: 'erd'}, 
        {sp: 'erd', ep: 'blr'}
    ];
    const r = trip.map( m => {
      return m.sp
    });
    const s = trip.map( m => {
      return m.ep
    });
    console.log(Array.from(new Set(r.concat(s))));
...