flattenFully

flattenFully

  • (anArray: array) => array
  1. Completely flatten an array

    flattenFully(['a', ['b', ['c']]]) // is ['a', 'b', 'c']
    flattenFully(['a', ['b', ['c']]]) // is ['a', 'b', 'c']
    
    flattenFully(['a', ['b', ['c']]]) // is ['a', 'b', 'c']
    flattenFully(['a', ['b', ['c']]]) // is ['a', 'b', 'c']
    
  2. Sometimes we have nested arrays and want them in a flat list. Below, we want to list all the files in our project directory. Let's flatten it.

    const assets = ['/project/assets/styles.css', '/project/assets/logo.png']
    
    const components = [
      '/project/src/components/header.js',
      '/project/src/components/footer.js',
    ]
    
    const src = ['/project/src/index.html', '/project/src/index.js', components]
    
    const project = ['/project/package.json', assets, src]
    
    const allProjectFiles = flattenFully(project)
    console.log(allProjectFiles)
    // is [
    //   /project/package.json,
    //   /project/assets/styles.css,
    //   /project/assets/logo.png,
    //   /project/src/index.html,
    //   /project/src/index.js,
    //   /project/src/components/header.js,
    //   /project/src/components/footer.js,
    // ]
    const assets = ['/project/assets/styles.css', '/project/assets/logo.png']
    
    const components = [
      '/project/src/components/header.js',
      '/project/src/components/footer.js',
    ]
    
    const src = ['/project/src/index.html', '/project/src/index.js', components]
    
    const project = ['/project/package.json', assets, src]
    
    const allProjectFiles = flattenFully(project)
    console.log(allProjectFiles)
    // is [
    //   /project/package.json,
    //   /project/assets/styles.css,
    //   /project/assets/logo.png,
    //   /project/src/index.html,
    //   /project/src/index.js,
    //   /project/src/components/header.js,
    //   /project/src/components/footer.js,
    // ]
    
    const assets = [
      '/project/assets/styles.css',
      '/project/assets/logo.png',
    ]
    
    const components = [
      '/project/src/components/header.js',
      '/project/src/components/footer.js',
    ]
    
    const src = [
      '/project/src/index.html',
      '/project/src/index.js',
      components,
    ]
    
    const project = [
      '/project/package.json',
      assets,
      src,
    ]
    
    const allProjectFiles = flattenFully(project)
    console.log(allProjectFiles)
    // is [
    //   /project/package.json,
    //   /project/assets/styles.css,
    //   /project/assets/logo.png,
    //   /project/src/index.html,
    //   /project/src/index.js,
    //   /project/src/components/header.js,
    //   /project/src/components/footer.js,
    // ]
    const assets = [
      '/project/assets/styles.css',
      '/project/assets/logo.png',
    ]
    
    const components = [
      '/project/src/components/header.js',
      '/project/src/components/footer.js',
    ]
    
    const src = [
      '/project/src/index.html',
      '/project/src/index.js',
      components,
    ]
    
    const project = [
      '/project/package.json',
      assets,
      src,
    ]
    
    const allProjectFiles = flattenFully(project)
    console.log(allProjectFiles)
    // is [
    //   /project/package.json,
    //   /project/assets/styles.css,
    //   /project/assets/logo.png,
    //   /project/src/index.html,
    //   /project/src/index.js,
    //   /project/src/components/header.js,
    //   /project/src/components/footer.js,
    // ]