Given the following Map:
const myMap = new Map([
[“a”, [{
files: [{
name: “f1a”
}, {
name: “f2a”
}]
}]],
[“b”, [{
files: [{
name: “f1b”
}, {
name: “f2b”
}]
}]]
]);
I need to have the following result:
[{
"name": "f1a"
}, {
"name": "f2a"
}, {
"name": "f1b"
}, {
"name": "f2b"
}]
I achieved that using:
[...x.values()].flat().map(x => x.files).flat()
How can the above be optimized, can even use lodash I don't mind.
I tried to use lodash: flattenMapDeep
but didn't work
You can use Array#[flat, flatMap]
:
const myMap = new Map([
['a', [{
files: [{
name: 'f1a'
}, {
name: 'f2a'
}]
}]],
['b', [{
files: [{
name: 'f1b'
}, {
name: 'f2b'
}]
}]]
])
// Your code..
const result1 = [...myMap.values()].flat().map(x => x.files).flat()
console.log('Result1', result1)
// Using Array#[flat, flatMap] (((Fastest)))
const result2 = [...myMap.values()].flat().flatMap(x => x.files)
console.log('Result2', result2)