我想在str
变量中找到text
变量的值,并将事件存储在hits
数组中。我已经尝试了很多次,但没有运气让这个程序工作:
/*jshint multistr:true */
text = "tang sit men loop";
var str = "men";
var hits = [];
for( var i = 0; i < text.length; i++ ) {
if( text[i] === "m") {
for( var j = i; j < (str.length + 1); j++ ) {
hits.push( text[i] );
}
}
}
if( hits.length === 0 ) {
console.log( "Not found" );
}
else {
console.log( hits );
}
答案 0 :(得分:1)
你的嵌套for循环中有两个错误。请尝试以下方法:
for( var j = i; j < (i + str.length + 1); j++ ) {
hits.push( text[j] );
}
首先,您应该将j < (str.length + 1)
更改为j < (i + str.length + 1)
。然后,您应该将hits.push( text[i] );
更改为hits.push( text[j] );
经过这些更正后,输出如下: m,e,n,
关于这一点,您只需使用JSFiddle来调试代码。
答案 1 :(得分:0)
我可以在此范围内对代码进行改造,但请检查以下条件,了解for( var j = i; j < (str.length + 1); j++ ) {
循环 - &gt;这种情况有问题function testingThisOneHere(){
var text = "tang sit men loop";
var str = "men";
var hits = [];
alert("text.length"+text.length);
alert("str.length"+str.length);
for( var i = 0; i < text.length; i++ ) {
//alert("condition: "+(text[i] == "m"));
//alert("text[i]"+text[i]);
if( text[i] == "m") {
for( var j = i; j < (str.length + 1); j++ ) {
hits.push( text[i] );
}
}
}
if( hits.length != 0 ) {
alert( hits );
}
else {
alert( "Not found" );
}
}
{{1}}
答案 2 :(得分:0)
你在内心for循环中遗漏了一件事,j
与i
:
hits.push( text[j] );
与hits.push( text[i] );
JS:
var text = "tang sit men loop";
var str = "men";
var hits = [];
for( var i = 0; i < text.length; i++ ) {
if( text[i] === "m") {
for( var j = i; j < (str.length + i); j++ ) {
hits.push( text[j] );
}
}
}
if( hits.length === 0 ) {
console.log( "Not found" );
}
else {
console.log( hits );
}
以下是工作示例的链接:http://jsbin.com/gaxenidalo/edit?js,console
希望有所帮助!