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)
//------------------------------------------