Javascript 从字符串生成块

Javascript 从字符串生成块,javascript,arrays,Javascript,Arrays,在讨论这个问题之前,我想动态地生成 temp=word[i]表示2, temp=word[i-1]+word[i]代表3, temp=word[i-2]+word[i-1]+word[i]for 4 我用代码解释了我的尝试 function produceTwoChArray(word) { var temp = ""; var tempArr = []; for (var i = 0; i < word.length; i++) {

在讨论这个问题之前,我想动态地生成

temp=word[i]表示2,

temp=word[i-1]+word[i]代表3,

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

我用代码解释了我的尝试

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")
所以在for循环中,如果我改为下面的代码生成三个字母,那么

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

["bre", "rea", "eak", "aki", "kin", "ing"]
因此,添加单词[i-1],单词[i-2]和临时长度3,4等等

为了动态创建temp语句,我创建了以下函数

(一)

(二)

但是上面两个try都返回字符串,所以它不起作用。当我在produceTwoChArray fn中调用上述fn时,如下所示

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;
}
函数produceTwoChArray(word,n){
var temp=“”;
var tempArr=[];
var-retVar=generateWordSequence(n,字);
for(变量i=0;i
当我尝试produceTwochArray内部的所有逻辑时,我也没有成功


请在这里帮助我。

您可以使用
slice
方法来获得更简单的解决方案

函数produceArray(str,n){
return str=str.split(“”).map(函数(项,i,str){
返回str.slice(i,i+n).join(“”);
}).filter(a=>a.length==n);
}
日志(produceArray(“breaking”,2));
日志(produceArray(“breaking”,3));
日志(produceArray(“breaking”,4));
日志(produceArray(“breaking”,5));

日志(produceArray(“breaking”,6))您可以使用映射部分字符串进行双切片

函数部分(字符串、计数){
return[…string.slice(count-1)].map((u,i)=>string.slice(i,i+count));
}
控制台日志(部分(“断开”,2));
控制台日志(部分(“断开”,3));
控制台日志(部分(“断开”,4))
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;
}
function generateWordSequence(n, word) {
  var n = n - 2;
  var temp1 = "";
  for (var j = n; j >= 0; j--) {
    temp1 = temp1 + word[i - j];
  }
  return temp1;
}
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;
}