我正在尝试返回从以下函数
获取的值result=[]
for(i=0;i<web.length;i++){
result[result.length]=score("Coooool!","OO")
}
进入以下数组
result=4,4,4
目前result=4
.Verify()
感谢任何帮助
答案 0 :(得分:2)
问题是,当你定义没有var
的变量时,它们就会成为全局范围的一部分。
function score(string, pattern) {
counter = 0
for (i = 0; i < string.length; i++) {
if (string.toUpperCase().substr(i, pattern.length) == pattern.toUpperCase())
counter++
}
return counter
}
result = []
for (i = 0; i < 4; i++) {
console.log("Before call: ", i)
result[result.length] = score("Coooool!", "OO")
console.log("After call: ", i)
}
console.log(result)
&#13;
function score(string, pattern) {
var counter = 0
for (var i = 0; i < string.length; i++) {
if (string.toUpperCase().substr(i, pattern.length) == pattern.toUpperCase())
counter++
}
return counter
}
var result = []
for (var i = 0; i < 4; i++) {
result[result.length] = score("Coooool!", "OO")
}
console.log(result)
&#13;
正如kevin kloet正确指出的那样,您应该使用.push
代替result[result.length]
答案 1 :(得分:0)
您根据长度而不是计数器索引数组。因此,请将其更改为result[i]=...
,如下所示。
result=[]
for(i=0;i<web.length;i++){
result[i]=score("Coooool!","OO")
}
你也可以push
到数组:
result=[]
for(i=0;i<web.length;i++){
result.push(score("Coooool!","OO"))
}