【问题标题】:Counting the occurence of a string after a for loop在 for 循环之后计算字符串的出现次数
【发布时间】:2016-01-05 22:14:40
【问题描述】:

我正在使用 Javascript 进行个人项目。我处于中级水平。 我创建了一个 for 循环,它给了我一个随机数列表。对于每个“i”,有一对整数。整数始终为正数、不同且在一定范围内(例如 1 到 10 之间)。 假设在我运行循环之后,我得到了这个:

1 vs 3
4 vs 7
5 vs 8
2 vs 3
7 vs 5
3 vs 4
1 vs 2
3 vs 5
3 vs 1
5 vs 7
... and so on...

现在,我如何计算每对出现的出现次数。例如,我希望能够:

3 vs 1: occurred 2 times
7 vs 5: occurred 2 times
3 vs 5: occurred 1 time

And so on...

顺序无关紧要,所以我认为 3 vs 1 和 1 vs 3 是一回事。我意识到这可能会使事情复杂化。

【问题讨论】:

  • 你为什么不发布代码?
  • 显示您的intermediary level 代码
  • 将数字存储为 int 而不是字符串并创建一个多维数组,然后您可以计数并查找出现次数,这不是更容易吗?

标签: javascript loops for-loop


【解决方案1】:

// Generate Pairs
var randomPairs = []
for (var i = 0; i < 10; ++i) {
  var randomPair = [Math.floor(Math.random() * 4) + 1, Math.floor(Math.random() * 4) + 1]
  randomPairs.push(randomPair)
}

// Count Pairs
var randomPairsCounted = []
for (var i = 0; i < randomPairs.length; ++i) {
  var a = randomPairs[i][0]
  var b = randomPairs[i][1]
  if (a > b) {
    var t = a
    a = b
    b = t
  }
  var doublicate = false
  for (var j = 0; j < randomPairsCounted.length; ++j) {
    if (randomPairsCounted[j][0] == a && randomPairsCounted[j][1] == b) {
      randomPairsCounted[j][2]++
      doublicate = true
      break
    }
  }
  if (doublicate == false) {
    randomPairsCounted.push([a, b, 1])
  }
}

// Demo Output
document.write("Pairs: " + JSON.stringify(randomPairs) + "<br><br>")
for (var i = 0; i < randomPairsCounted.length; ++i) {
  document.write(randomPairsCounted[i][0] + " vs " + randomPairsCounted[i][1] + 
                 ": occured " + randomPairsCounted[i][2] + " time" + 
                 (randomPairsCounted[i][2] == 1 ? "" : "s") + "<br>")
}

【讨论】:

  • 非常感谢 CodeiSir,这太棒了!我曾考虑过使用数组,这完全有道理:)
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2018-11-05
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多