'Get all substrings of a string in JavaScript

I have the following function to get all of the substrings from a string in JavaScript. I know it's not correct but I feel like I am going about it the right way. Any advice would be great.

 var theString     = 'somerandomword',
     allSubstrings = []; 

getAllSubstrings(theString);

function getAllSubstrings(str) {

  var start = 1;

  for ( var i = 0; i < str.length; i++  ) {

     allSubstrings.push( str.substring(start,i) ); 

  }

} 

console.log(allSubstrings)

Edit: Apologies if my question is unclear. By substring I mean all combinations of letters from the string (do not have to be actual words) So if the string was 'abc' you could have [a, ab, abc, b, ba, bac etc...] Thank you for all the responses.



Solution 1:[1]

A modified version of Accepted Answer. In order to give the minimum string length for permutation

function getAllSubstrings(str, size) {
  var i, j, result = [];
  size = (size || 0);
  for (i = 0; i < str.length; i++) {
    for (j = str.length; j - i >= size; j--) {
      result.push(str.slice(i, j));
    }
  }
  return result;
}

var theString = 'somerandomword';
console.log(getAllSubstrings(theString, 6));

Solution 2:[2]

Below is a recursive solution to the problem

let result = [];

function subsetsOfString(str, curr = '', index = 0) {
  if (index == str.length) {
    result.push(curr);
    return result;
  }
  subsetsOfString(str, curr, index + 1);
  subsetsOfString(str, curr + str[index], index + 1);
}

subsetsOfString("somerandomword");
console.log(result);

Solution 3:[3]

An answer with the use of substring function.

function getAllSubstrings(str) {
  var res = [];
  for (let i = 0; i < str.length; i++) {
    for (let j = i + 1; j <= str.length; j++) {
      res.push(str.substring(i, j));
    }
  }
  return res;
}
var word = "randomword";
console.log(getAllSubstrings(word));

Solution 4:[4]

Below is a simple approach to find all substrings


    var arr = "abcde";

     for(let i=0; i < arr.length; i++){

      for(let j=i; j < arr.length; j++){

      let bag ="";
      for(let k=i; k<j; k++){
       bag+ = arr[k]
    }
    console.log(bag)
  }
}

Solution 5:[5]

function generateALlSubstrings(N,str){
    
    for(let i=0; i<N; i++){

        for(let j=i+1; j<=N; j++){

            console.log(str.substring(i, j));
        }
    }
}

Solution 6:[6]

function getSubstrings(s){
    //if string passed is null or undefined or empty string
    if(!s)   return []; 

    let substrings = [];

    for(let length = 1 ; length <= s.length; length++){
        for(let  i = 0 ; (i + length) <= s.length ; i++){
            substrings.push(s.substr(i, length));
        }
    }

    return substrings;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 codejockie
Solution 2 codejockie
Solution 3 Satyam Pandey
Solution 4
Solution 5 Suraj Rao
Solution 6 Prksh