Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generate chunks from string

before going to problem, i want to generate dynamically like

temp = word[i] for 2,

temp = word[i-1] + word [i] for 3,

temp = word[i-2] + word[i-1] + word [i] for 4

I explained with code and what i have tried

function produceTwoChArray(word) {
      var temp = "";
      var tempArr = [];

      for (var i = 0; i < word.length; i++) {
        temp += word[i];
        if (temp.length === 2) {
          tempArr.push(temp);
        }
        temp = word[i];
      }
      return tempArr;
    }
    produceTwoChArray("breaking")

above code will produce result as :

 ["br", "re", "ea", "ak", "ki", "in", "ng"]

So inside the for loop if i change to below codes to produce three letters then

    if (temp.length === 3) {
        tempArr.push(temp);
    }
    temp =  word[i-1] + word[i];

Result:

["bre", "rea", "eak", "aki", "kin", "ing"]

so adding word[i-1], word[i-2] with temp length 3, 4 and so on..

For dynamically creating the temp statement, i created these Function

1)

function generateWordSequence(n) {
  var n = n - 2;
  var temp1 = [];
  for (var j = n; j >= 0; j--) {
    temp1.push("word[i - " + j + "]");
  }
  temp1 = temp1.join('+').toString();
  return temp1;
}

2)

function generateWordSequence(n, word) {
  var n = n - 2;
  var temp1 = "";
  for (var j = n; j >= 0; j--) {
    temp1 = temp1 + word[i - j];
  }
  return temp1;
}

But both above try's are returning as string so it didnt work. When i invoke above fn in produceTwoChArray fn like this

function produceTwoChArray(word, n) {
  var temp = "";
  var tempArr = [];
  var retVar = generateWordSequence(n, word);

  for (var i = 0; i < word.length; i++) {
    temp += word[i];
    if (temp.length === n) {
      tempArr.push(temp);
    }

    temp = retVar;

  }
  return tempArr;
}

When i tried those all logic inside produceTwochArray itself , i also didnt work.

Please help me out here.

like image 828
Arun Avatar asked Feb 12 '26 06:02

Arun


1 Answers

You could take a double slice with mapping part strings.

function part(string, count) {
    return [...string.slice(count - 1)].map((_, i) => string.slice(i, i + count));
}

console.log(part("breaking", 2));
console.log(part("breaking", 3));
console.log(part("breaking", 4));
like image 114
Nina Scholz Avatar answered Feb 13 '26 19:02

Nina Scholz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!