Dynamic programming to check dynamic behavior of an array in JavaScript

We are required to write a JavaScript function that takes in an array of strings, ordered by ascending length.

The function should return true if, for each pair of consecutive strings, the second string can be formed from the first by adding a single letter either at the beginning or end.

For example: If the array is given by −

const arr = ["c", "ca", "can", "acan", "acane", "dacane"];

Then our function should return true

Therefore, let’s write the code for this function.


The code for this will be −

const arr = ["c", "ca", "can", "acan", "acane", "dacane"];
const isProgressive = arr => {
   for(let i = 0; i < arr.length-1; i++){
      const nextLength = arr[i+1].length;
      if(arr[i+1] === arr[i+1][0] + arr[i] || arr[i+1] === arr[i] + arr[i+1][nextLength-1] ){
      return false;
   return true;


The output in the console will be −