在ES6中过滤对象以形成另一个对象

Sud*_*eej 2 javascript arrays javascript-objects ecmascript-6

我有一个像下面的对象数组,我试图只映射某些键及其值,以形成另一个数组对象.

以下是我对单个对象的尝试

const object1 = { app_id:35687,codesmell: 30, baz: 42 };
console.log(Object.entries(object1).map(x => {app_id:x.app_id}));
Run Code Online (Sandbox Code Playgroud)

我总是得到未定义,一直在搜索mdn和stackoverflow无法找到解决方案.请帮忙.

我试过的另一次尝试,这次result是数组,其中是一个对象数组

T_BugDetails: result.data.map(x => Object.entries(x).reduce((a,b) => { a, b},{}))
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 7

一些问题:

  • Object.entries返回一个数组数组(键的数组和对象的值).如果你.map的entries对象,第一个参数.map应该是键和值的数组,像这样:

    Object.entries(object1).map(([key, val]) => ...
    
    Run Code Online (Sandbox Code Playgroud)
  • 要从箭头函数返回一个对象,请将对象的括号({和})括在括号中,否则它将被解释为内部带有标签的普通函数块,而不是要隐式返回的对象:

    => {app_id:x.app_id}
    
    Run Code Online (Sandbox Code Playgroud)

至

    => ({app_id:x.app_id})
Run Code Online (Sandbox Code Playgroud)
  • 但是如果你只想要一个由app_id原始对象组成的对象,不要迭代entries原始对象,因为你只想要一个属性,而不是它的所有属性 - 而只是提取app_id原始对象:

const object1 = { app_id:35687,codesmell: 30, baz: 42 };
const { app_id } = object1;
console.log(
  { app_id }
);
Run Code Online (Sandbox Code Playgroud)

.map只有在需要转换的对象数组时才使用,例如:

const objects = [
  { app_id:35687,codesmell: 30, baz: 42 },
  { app_id:12345,codesmell: 20, baz: 52 }
];
console.log(
  objects.map(({ app_id }) => ({ app_id }))
);
Run Code Online (Sandbox Code Playgroud)