var text = "blah blah Josh bbla Josh Josh";
var myName = "Josh";
var hits = [];
for (var i = 0; i < text.length; i++);{
if (text[i] === myName[0]) {
for (var j = i; j < (myName.length + i); j++) {
hits.push(text[j]);
}
}
}
if (hits.length === 0) {
console.log("Your name wasn't found!");}
else {
console.log(hits);
}
为什么这段代码不会将数据发送到数组中?感觉就像我尝试了一切,根据在线论坛,这是正确的synthax。任何帮助都会得到满足。
答案 0 :(得分:5)
在开始花括号前删除分号。那个分号现在形成了for循环的主体,结果没有任何结果。
for(var i = 0; i < text.length; i++);{
答案 1 :(得分:0)
如果您正在关注“推送数据”,则只需在第6行末尾的大括号前删除分号,该分号为:
for (var i = 0; i < text.length; i++);{
这应该使for循环的块执行得恰到好处。看起来应该是这样的:
for (var i = 0; i < text.length; i++) {
if (text[i] === myName[0]) {
for (var j = i; j < (myName.length + i); j++) {
hits.push(text[j]);
}
}
}
答案 2 :(得分:-1)
你不需要循环两次; 只需将字符串和循环分开一次,如下所示:
var text = "blah blah Josh bbla Josh Josh";
var myName = "Josh";
var hits = [];
text = text.split(" ")
for(var i = 0; i < text.length; i++){
if (text[i] === myName){
hits.push(text[i]);
}
}
if(hits.length === 0) {
console.log("Your name wasn't found!");
}
else{
console.log(hits);
}
答案 3 :(得分:-1)
我认为这是XY problem的一个案例。
如果您想知道字符串是否包含其他子字符串,请更好地使用
if("blah blah Josh bbla Josh Josh".indexOf("Josh") < 0) {
console.log("Your name wasn't found!");}
else {
// Whatever
}
或者,如果你真的想获得['J','o','s','h','J','o',...]
,你可以使用
"blah blah Josh bbla Josh Josh".match(/Josh/g).join('').split('')
答案 4 :(得分:-2)
你恰好为string.length获取一个值,告诉你有多少个字符。您可能实际上并没有尝试遍历字符串。相反,似乎你想要将字符串拆分成一个名字数组 - 在空格处分解:
var names = text.split(' ');
for(var i = 0; i < names.length; i++);{