在Javascript中在数组中多次返回相同的值

时间:2016-11-17 12:14:52

标签: javascript

我正在尝试返回从以下函数

获取的值
result=[]

for(i=0;i<web.length;i++){
  result[result.length]=score("Coooool!","OO")
  }

进入以下数组

result=4,4,4

目前result=4 .Verify()

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

问题是,当你定义没有var的变量时,它们就会成为全局范围的一部分。

您的代码

&#13;
&#13;
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;
&#13;
&#13;

已解决的代码

&#13;
&#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;
&#13;
&#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"))
}