我试图返回具有选定键的新对象-reqProps。我设法通过修复props prop1,prop3做到了这一点,现在希望能够传递reqProps数组值来替换prop1,prop3。我尝试了函数,字符串文字和一些“ hacks”。他们都没有工作

const data = [
  {
    prop1: 1,
    prop2: 2,
    prop3: 3
  },
  {
    prop1: 10,
    prop2: 20,
    prop3: 30
  },
  {
    prop2: 200,
    prop4: 400
  },
  {
    prop3: 3000
  }
];

// to return properties for the following...
const reqProps = ['prop2','prop3','prop4'];

// current implementation fixing return object with prop1, prop3
const obj = data.map(({prop1, prop3}) => {
    return {prop1, prop3};
});


目前obj的结果是

[{"prop1":1,"prop3":3},{"prop1":10,"prop3":30},{},{"prop3":3000}]


我不想使用循环,就像解构的“力量”一样! ;)

最佳答案

如果您坚持要进行销毁,则必须使用eval

const reqProps = ['prop2','prop3','prop4'];

const literalString = '{'+reqProps.join(',')+'}';

const obj = data.map(new Function(literalString, 'return '+literalString));


您确实应该使用循环-您也可以将其隐藏在辅助函数中,或者仅使用reduce

关于javascript - ES6中的简单解构数组/对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46063766/

10-11 14:16