如何使用reduce获得列表数组对象的一些道具

时间:2019-06-27 03:09:28

标签: javascript arrays object ecmascript-6 reduce

我有一个列表数组对象,如:

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 }
]

以及在使用reduce()

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

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

4 个答案:

答案 0 :(得分:2)

使用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 :(得分:1)

您可以使用ES6(及更高版本)的object destructuring

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);

答案 2 :(得分:1)

由于您要求使用reduce来实现此目的,所以这是方法。传递一个空数组作为kubectl rollout restart deployment/my-deployment 并在reduce回调函数内部创建具有所需键的对象并将其推入累加器

thisArg

答案 3 :(得分:1)

如果您想使用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; }