如何删除数组中每个对象的属性?

时间:2018-04-22 21:15:41

标签: javascript

我说我有

let a = [{
  foo: 1
  bar: 1
  baz: 1
},{
  foo: 2
  bar: 2
  baz: 2
},{
  foo: 3
  bar: 3,
  baz: 3
}];

如何删除每个对象中的bar以便

a = [{ foo: 1, baz: 1 }, { foo: 2, baz: 2 }, { foo: 3, baz: 3 }];

我简化了示例,但每个对象都可以有很多属性。

2 个答案:

答案 0 :(得分:3)

使用.map将数组的每个元素转换为另一个元素。另请注意,您的代码段的语法无效;对象的属性需要用逗号分隔。

const input = [{
  foo: 1,
  bar: 1
},{
  foo: 2,
  bar: 2
},{
  foo: 3,
  bar: 3
}];
const output = input.map(({ foo }) => ({ foo }));
console.log(output);

如果你想删除一个属性而不是保存一些特定属性,你可以使用object rest / spread做类似的事情:

const input = [{
  foo: 1,
  bar: 1,
  baz: 1
},{
  foo: 2,
  bar: 2,
  baz: 2
},{
  foo: 3,
  bar: 3,
  baz: 3
}];
const output = input.map(({ foo, ...otherProps }) => ({ ...otherProps }));
console.log(output);

答案 1 :(得分:1)

使用Object.assign,这样就不会丢失第一个对象并创建一个具有所需属性的新对象:

const a = [{
  foo: 1,
  bar: 1,
  baz: 1
},{
  foo: 2,
  bar: 2,
  baz: 2
},{
  foo: 3,
  bar: 3,
  baz: 3
}];

const b = Object.assign(a.map(({foo, baz}) => ({foo, baz}) ), {});

console.log( JSON.stringify(b) )

console.log(a)