flattenAndSort & nearFlatten
Codewars Kata 7
by trentHarlem
JavaScript
//------------------------------------------
// ¡¡NOT WORKING YET!!
const nearFlatten = (nested) => nested
.reduce((x,c) => [].concat(...nested),[])
.sort((a, b)=>(a[0] == b[0])?b[0] - a[0]: a[1] - b[1])
// or with decomposition syntax
//const flattened = (...arr) => [].concat(...arr);
console.log(nearFlatten([[1,2,3,4]]))
console.log(nearFlatten([[1,2,3],[[4,5],[6,7,8]]]), '[[1,2,3],[4,5],[6,7,8]]')
console.log(nearFlatten([[[1,2,3],[9,10]],[[4,5],[6,7,8]]]))
//------------------------------------------
//WORKING
const flattenAndSort = (arr) => arr.reduce((a,c) => a.concat(c),[]).sort((a,b) => a-b)
//console.log(flattenAndSort([[1, 3, 5], [100], [2, 4, 6]]), [1, 2, 3, 4, 5, 6, 100]);
//------------------------------------------
function* flatten(array, depth) {
if(depth === undefined) {
depth = 1;
}
for(const item of array) {
if(Array.isArray(item) && depth > 0) {
yield flatten(item, depth - 1);
} else {
yield item;
}
}
}
const arr = [1, 2, [3, 4, [5, 6]]];
const flattened = [...flatten(arr, Infinity)];
const flat2 = [...flatten([[1,2,3],[[4,5],[6,7,8]]], 2)];
console.log('flat2',flat2)
//------------------------------------------