Как извлечь поля из массива? - PullRequest
0 голосов
/ 06 февраля 2019

let obj = [{ first: 'Jane', last: 'Doe'  , x : 1 },
          { first: 'Jane1', last: 'Doe1', x : 2 },
          { first: 'Jane2', last: 'Doe2', x : 3 },
          { first: 'Jane3', last: 'Doe4' , x : 4}];
          
          // gives false for unsatisfied condition, which is fine I believe
          let res = obj.map( o =>  {  return o.x > 2 && {  "first": o.first, "x": o.x  }  } )
          // below returns all fields where as I want only two fields
          let res1 = obj.filter( o => {  return o.x > 2 && {  "first": o.first, "x": o.x  } } )
          
console.log(res)
console.log(res1)

Как получить первые и x полей с условием

Ожидаемый результат

[
   {
    "first": "Jane2",
    "x": 3
  },
  {
    "first": "Jane3",
    "x": 4
  }
]

Спасибо

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Просто конкатат 2 функции

const arr = [
  { first: 'Jane', last: 'Doe', x: 1 },
  { first: 'Jane1', last: 'Doe1', x: 2 },
  { first: 'Jane2', last: 'Doe2', x: 3 },
  { first: 'Jane3', last: 'Doe4', x: 4 }
];          

const result = arr.filter(o => o.x > 2).map(o => ({first: o.first, x: o.x}));

console.log(result);
0 голосов
/ 06 февраля 2019

Вы можете использовать фильтр, чтобы получить новый массив на основе ваших критериев.Это полезно, поскольку оно не изменяет существующий массив.Затем вы можете использовать карту, чтобы изменить структуру, как показано.

const arr = [{
    first: 'Jane',
    last: 'Doe',
    x: 1
  },
  {
    first: 'Jane1',
    last: 'Doe1',
    x: 2
  },
  {
    first: 'Jane2',
    last: 'Doe2',
    x: 3
  },
  {
    first: 'Jane3',
    last: 'Doe4',
    x: 4
  }
],

res = arr.filter(item => item.x > 2).map(({first,x}) => ({first,x}));
console.log(res);
0 голосов
/ 06 февраля 2019

Вы можете использовать .reduce для формирования массива объектов, где x больше 2, вот так.Здесь я использовал деструктурирующее присваивание , чтобы получить свойства first и x от данного объекта, а затем использовал троичный оператор, чтобы проверить, добавлять или нет объект в массив:

const arr = [{first:'Jane',last:'Doe',x:1},{first:'Jane1',last:'Doe1',x:2},{first:'Jane2',last:'Doe2',x:3},{first:'Jane3',last:'Doe4',x:4}],

res = arr.reduce((acc, {first, x}) =>  x > 2 ? [...acc, {first, x}]:acc, []);
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...