Как получить некоторые реквизиты объекта массива списков, используя Reduce - PullRequest
0 голосов
/ 27 июня 2019

У меня есть объект массива списка вроде:

let arr = [
    { a: 1, b: 2, c: 3, d: 4 },
    { a: 2, b: 3, c: 4, d: 5 },
    { a: 5, b: 6, c: 7, d: 8 }
]

и после использования redu ()

// get props **b, c**
let arr_result = arr.reduce( ... )

// arr_result = [
//    { b: 2, c: 3 },
//    { b: 3, c: 4 },
//    { b: 6, c: 7 }
// ]

Ответы [ 4 ]

2 голосов
/ 27 июня 2019

использовать map.

let arr = [{
    a: 1,
    b: 2,
    c: 3,
    d: 4
  },
  {
    a: 2,
    b: 3,
    c: 4,
    d: 5
  },
  {
    a: 5,
    b: 6,
    c: 7,
    d: 8
  }
]

const output = arr.map(({b, c}) =>  ({b, c}));

console.log(output);
1 голос
/ 27 июня 2019

Если вы хотите использовать reduce:

const arr = [{a:1,b:2,c:3,d:4},{a:2,b:3,c:4,d:5},{a:5,b:6,c:7,d:8}];

const res = arr.reduce((a, { b, c }) => (a.push({ b, c }), a), []);

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }

Честно говоря, с map:

все намного проще.

const arr = [{a:1,b:2,c:3,d:4},{a:2,b:3,c:4,d:5},{a:5,b:6,c:7,d:8}];

const res = arr.map(({ b, c }) => ({ b, c }));

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
1 голос
/ 27 июня 2019

Поскольку вы просили добиться этого с помощью метода снижения, вот способ. Передайте пустой массив как thisArg и внутри функции уменьшенного обратного вызова создайте объект с требуемым ключом и отправьте его в аккумулятор

let arr = [{
    a: 1,
    b: 2,
    c: 3,
    d: 4
  },
  {
    a: 2,
    b: 3,
    c: 4,
    d: 5
  },
  {
    a: 5,
    b: 6,
    c: 7,
    d: 8
  }
];


let newArr = arr.reduce(function(acc, curr) {

  acc.push({
    b: curr.b,
    c: curr.c
  })

  return acc;
}, [])

console.log(newArr)
1 голос
/ 27 июня 2019

Вы можете использовать ES6 (и далее) разрушение объекта .

const arr = [
    { a: 1, b: 2, c: 3, d: 4 },
    { a: 2, b: 3, c: 4, d: 5 },
    { a: 5, b: 6, c: 7, d: 8 }
]

const res = arr.map(obj => {
  const { b, c } = obj;
  return { b, c };
});

console.log(res);
...