如何减少数组中哈希的键?

时间:2018-02-26 06:22:30

标签: javascript ecmascript-6

例如: (我假设像JSON数据一样)

const arr = [
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4},...
]

我不需要barfuga键, 所以我想从这个数组中提取

[
  {foo: 1, hoge: 3},
  {foo: 1, hoge: 3},
  {foo: 1, hoge: 3},
  {foo: 1, hoge: 3},...
]

我怎样才能以简单的方式做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用仅映射指定键并返回预期输出的映射器函数。几乎与_.pick

相似



const mapper = ({foo, hoge}) => ({foo, hoge});

const arr = [
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4},
  {foo: 1, bar: 2, hoge: 3, fuga: 4}
]

console.log(arr.map(mapper))




答案 1 :(得分:0)

您可以使用Array#map并仅返回所需的键:

const arr = [{
    foo: 1,
    bar: 2,
    hoge: 3,
    fuga: 4
  },
  {
    foo: 1,
    bar: 2,
    hoge: 3,
    fuga: 4
  },
  {
    foo: 1,
    bar: 2,
    hoge: 3,
    fuga: 4
  },
  {
    foo: 1,
    bar: 2,
    hoge: 3,
    fuga: 4
  }
];

const result = arr.map(item => ({
  foo: item.foo,
  hoge: item.hoge
}));

console.log(result);

答案 2 :(得分:0)

使用delete运算符

arr.forEach(function(element) {
  delete element.bar;
  delete element.fuga;
});