例如,将其打开:

const enums = { ip: 'ip', er: 'er' };

const obj = {
  somethingNotNeeded: {...},
  er: [
    { a: 1},
    { b: 2}
  ],
  somethingElseNotNeeded: {...},
  ip: [
    { a: 1},
    { b: 2}
  ]
}

变成这个:
[
  { a: 1},
  { b: 2},
  { a: 1},
  { b: 2}
]

我已经通过声明我想要的类型的枚举对象(er,ip)然后在obj上执行forEach(lodash)循环来检查是否密钥不在枚举中并将其删除原始对象然后只有我想要的对象,我做了两个嵌套的forEach循环,使用对象剩余分布将结果连接到一个新对象...

我几乎完全确定有更好的方法可以做到这一点,但我今天没有想到。

最佳答案

使用 enums (或 Object.values() ,如果它们始终相同)获取Object.keys()属性。使用 Array.map() 迭代属性名称数组,并从obj中提取其值。通过spreading将数组的数组展平为 Array.concat() :

const enums = { ip: 'ip', er: 'er' };

const obj = {
  somethingNotNeeded: {},
  er: [
    { a: 1},
    { b: 2}
  ],
  somethingElseNotNeeded: {},
  ip: [
    { a: 1},
    { b: 2}
  ]
};

const result = [].concat(...Object.values(enums).map(p => obj[p]));

console.log(result);

08-25 11:13
查看更多