我有这个;
let subs = [];
for ( const item of items ) { // array
for ( const sub of item ) { // array
subs.push( sub );
}
}
并且想要与此相同的结果(版本2):
const arr = Object.values(items).map(item =>
item.map(sub => sub)
);
但是,在版本2中,我为每个“item”获取一个“subs”数组,而不是一个包含所有“subs”的数组(如版本1中所示)。我需要像“flatMap”这样的东西。或者我该怎么做?
答案 0 :(得分:2)
是的,let flatMap = (a, fn) => [].concat(...a.map(fn));
在ES6中相当微不足道
let flatMap = (a, fn) => [].concat(...a.map(fn));
items = [[1,2], [3,4], [5,6]]
console.log(flatMap(items, x=>x))
示例:
NB_EPOCH = 200
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
N_HIDDEN
答案 1 :(得分:1)
使用reduce的简单解决方案是
items.reduce ((flat, item) => flat.concat (item), [])
var items = [[1,2,3],[4,5,6]]
var flat = items.reduce ((flat, item) => flat.concat (item), []);
console.log (flat)

递归版本几乎一样简单:
var reducer = (flat, item) => Array.isArray (item)?item.reduce(reducer,flat):flat.concat (item);
var items = [[1,2,3,[7,8,9]],[4,5,6]]
console.log (items.reduce(reducer, []))