All ways to divide array of strings into parts in JavaScript

In JavaScript, dividing an array into two non-empty parts can be accomplished through various approaches. This tutorial explores different methods to generate all possible ways to split an array of strings into exactly two parts.

Problem Statement

We need to create a JavaScript function that takes an array of strings with at least two elements and returns all possible ways to divide it into two non-empty parts.

For example, with the array ["az", "toto", "picaro", "zone", "kiwi"], we want to generate:

(az) | (toto picaro zone kiwi)
(az toto) | (picaro zone kiwi)  
(az toto picaro) | (zone kiwi)
(az toto picaro zone) | (kiwi)

Method 1: Using Array.slice() with Loop

The most straightforward approach uses Array.slice() to split the array at different positions:

const arr = ["az", "toto", "picaro", "zone", "kiwi"];

const findAllPossibilities = (arr = []) => {
    const result = [];
    
    // Loop from 1 to length-1 to ensure both parts are non-empty
    for (let i = 1; i 

[
  [ 'az', 'toto picaro zone kiwi' ],
  [ 'az toto', 'picaro zone kiwi' ],
  [ 'az toto picaro', 'zone kiwi' ],
  [ 'az toto picaro zone', 'kiwi' ]
]

Method 2: Using Array.splice() and Spread Operator

An alternative approach using splice() and the spread operator for array manipulation:

const divideArrayAlternative = (inputArray) => {
    const results = [];
    
    for (let splitIndex = 1; splitIndex 

[
  [ 'hello', 'world javascript coding' ],
  [ 'hello world', 'javascript coding' ],
  [ 'hello world javascript', 'coding' ]
]

Method 3: Functional Approach with Map

A more functional programming style using Array.from() and map():

const functionalDivide = (arr) => {
    return Array.from({ length: arr.length - 1 }, (_, i) => [
        arr.slice(0, i + 1).join(" "),
        arr.slice(i + 1).join(" ")
    ]);
};

const words = ["apple", "banana", "cherry", "date"];
console.log(functionalDivide(words));
[
  [ 'apple', 'banana cherry date' ],
  [ 'apple banana', 'cherry date' ],
  [ 'apple banana cherry', 'date' ]
]

Comparison of Methods

Method Readability Performance Memory Usage
Array.slice() with Loop High Good Efficient
Array.splice() Method Medium Moderate Higher (creates copies)
Functional Approach High Good Efficient

Key Points

  • Always ensure both parts are non-empty by starting the loop at index 1
  • Use Array.slice() for non-destructive array splitting
  • The join(" ") method converts array elements to space-separated strings
  • The number of possible divisions is always array.length - 1

Conclusion

The Array.slice() method with a simple loop provides the most efficient and readable solution for dividing arrays into two parts. Choose the functional approach for codebases emphasizing functional programming principles.

Updated on: 2026-03-15T23:19:00+05:30

331 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements