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;
}