【问题标题】:JS function to count odd numbers and negatives in arrayJS函数计算数组中的奇数和负数
【发布时间】:2016-07-05 21:39:02
【问题描述】:

我目前正在尝试编写一个 JS 函数,该函数接受多个参数来计算或统计“数组”中的奇数和负数。我将数组放在引号中,因为该函数实际上接受了参数。

我想使用 for 循环来获取赔率和负数,但我的代码不起作用。

function arrayAnalyzer() {

var myArray = Array.prototype.slice.call(arguments)

var counter = {
  odds : 0,
  negatives : 0,
  avg : 0,
  median : 0
}

  for(var i = 0; i < myArray.length; i++) {

    if(myArray{i] % 2 === 1) {
       counter.odds++ }

    if(myArray[i] < 0) {
       counter.negatives++ }
    }  

return counter
}

 arrayAnalyzer(7, -3, 0, 12, 44, -5, 3);

我在网上发现这段代码可以工作,但如果可能的话,我想使用 for 循环。

myArray.forEach(function(num){
    if (Math.abs(num) % 2 === 1) counter.odds++
    if (num < 0) counter.negatives++
})

【问题讨论】:

  • myArray{i] 中有错字...另外,您确定 myArray 正在填充吗?
  • 只是补充一点,forEach 循环还可以解释您的for 循环没有的负奇数。
  • 修复myArray{i] 错字后代码似乎可以工作,除非我遗漏了什么。一个可能的问题:不计算负奇数。
  • 天哪,这是一个非常简单的错误。谢谢你抓住那个。我在 chrome 控制台上调试,但由于某种原因,我没有看到那个语法错误。谢谢大家@BeardFist 你是对的,所以在这种情况下, forEach 将是一个更好的方法来做到这一点。感谢您的建议

标签: javascript arrays for-loop arguments


【解决方案1】:

似乎在您的第一个 if 语句中进行了轻微的语法修复:

function arrayAnalyzer() {

var myArray = Array.prototype.slice.call(arguments)

var counter = {
  odds : 0,
  negatives : 0,
  avg : 0,
  median : 0
}

  for(var i = 0; i < myArray.length; i++) {

    if(myArray[i] % 2 === 1) {
       counter.odds++ }

    if(myArray[i] < 0) {
       counter.negatives++ }
    }  

return counter
}

工作 JSBIN:https://jsbin.com/yokawu/edit?js,console

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2012-09-22
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多