[英]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();
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.