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)
一些问题:
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)