使用`map`创建属性较少的新对象数组

时间:2019-12-17 15:17:14

标签: javascript arrays

我想使用map创建一个新的对象数组,该对象数组具有原始数组中原始对象的两个属性,所以我正在尝试:

const filteredConfigurableModules = configurableModules.map(module =>
  module.name, module.configurables
);

但是这不起作用,因为只有“名称”被保存到新数组中。我在这里想念什么?

我也尝试过:

const filteredConfigurableModules = configurableModules.map(module => {
  name: module.name,
  configurables: module.configurables
});

...但是最终出现语法错误:

SyntaxError: Unexpected token ':'

4 个答案:

答案 0 :(得分:4)

如我所见,您想从一个数组map到另一个数组。您可以通过2种方式做到这一点:

内联

  const filteredConfigurableModules = configurableModules.map(module => ({name: module.name, configurables: module.configurables}));

内联并返回对象时,必须将其包装在括号中,以便对其进行正确评估。

使用退货声明

const filteredConfigurableModules = configurableModules.map(module => {
  return {
    name: module.name,
    configurables: module.configurables
  };
});

答案 1 :(得分:1)

您应该使用括号将其包裹起来,如下所示:

const filteredConfigurableModules = configurableModules.map(({name, configurables})=> ({
  name,
  configurables
}));

答案 2 :(得分:0)

您可以在地图上的箭头功能上创建一个新对象:

const filteredConfigurableModules = configurableModules.map(module =>
  ({ name: module.name, configurables: module.configurables })
);

这将返回带有名称和模块字段的对象数组。

如果返回对象,则需要使用括号,因为否则它将被视为没有返回的代码体。

答案 3 :(得分:0)

如果我正确理解了您的问题,您可以尝试一下吗

const filteredConfigurableModules = configurableModules.map(module => ({
  name : module.name,
  configurables : module.configurables,
}));