繁体   English   中英

在 Javascript 中,我如何 map 一个数组,其中元素可以拆分为多个元素?

[英]In Javascript, how do I map an array where elements could split into multiple elements?

假设我有这样的 object:

var families =
[
    { dad: 'bob', mom: 'sue', income: 10 },
    { dad: 'john', mom: 'jane', income: 5 }
];

有没有一种奇特的方法可以将其转换为以下内容:

[ 'bob', 'sue', 'john', 'jane' ];

我知道我可以这样做:

var people = [];
for (var index = 0; index < families.length; index++)
{
    people.push(families[index].dad);
    people.push(families[index].mom);
}

但是,我喜欢尽可能使用 Javascript 的内置数组函数(过滤器、map、forEach 等)。 我能想到的最好的方法是使用“地图”:

var people = families.map(function(family)
{
    return [family.dad, family.mom];
});

但这不符合我的要求:

[ [ 'bob', 'sue' ], [ 'john', 'jane' ] ]

有没有可以做我想做的内置? 谢谢!

您可以在.map中解构属性,像您正在做的那样返回一个数组,然后.flat()十个数组:

 var families = [ { dad: 'bob', mom: 'sue', income: 10 }, { dad: 'john', mom: 'jane', income: 5 } ]; const names = families.map(({ dad, mom }) => [dad, mom]).flat(); console.log(names);

您可以使用减少function:

 let families = [ { dad: 'bob', mom: 'sue', income: 10 }, { dad: 'john', mom: 'jane', income: 5 } ]; const result = families.reduce((res, item)=> { return [...res, item.dad, item.mom] }, []) console.log(result)

或者只是将flat () 函数添加到 map 结果:

var people = families.map(function(family)
{
    return [family.dad, family.mom];
}).flat();
  • 一行代码使用.map
  • 创建嵌套数组,然后使用.flat

 var families = [ { dad: 'bob', mom: 'sue', income: 10 }, { dad: 'john', mom: 'jane', income: 5 } ]; console.log (families.map(it => [it.dad, it.mom]).flat())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM