【问题标题】:Javascript NewbieJavascript新手
【发布时间】:2021-06-15 06:09:41
【问题描述】:

有人可以帮我完成这个我必须做的项目吗?

创建一个循环,比较所提供的数字数组,对于数字 28。
如果大于 28,则记录 over,如果小于 28,则记录 under
如果它等于 28,则不要记录任何内容。

我需要像下面这个列表一样输出。

2 is under
40 is over 
31 is over

这是我目前的代码;我觉得我很接近,但我不确定。

var rando_array = [2, 40, 31, 29, 9, 12, 41, 90];
rando_array.sort();

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

    if (i > 28) {
        Its = "over";
    } else if (i < 28) {
        Its = "under";
    }

    console.log(rando_array[i] + "Its");
};

【问题讨论】:

  • 这是你的问题:1)你的数组被称为rando_array而不是over_under_array。 2) 从未使用过名为 Its 的变量。 3) 您将在每次迭代时重新声明 Its。 4) 如果您从"Its" 中删除引号,您仍然会打印不正确,因为它会显示为2Its。要解决此问题:删除var Its 并将Its = "over" 替换为console.log(over_under_array[i] + 'is over')。对under 执行相同操作。然后将rando_array 重命名为over_under_array
  • 非常感谢,我想通了。抱歉,我的代码和问题到处都是并且令人困惑。但我肯定明白了,谢谢你的帮助。

标签: javascript arrays compare


【解决方案1】:

由于您更喜欢 for 循环而不是 forEach 、地图等... 我稍微更新了您的代码以匹配您想要的内容,希望对您有所帮助!

let rando_array = [2, 40, 31, 29, 9, 12, 41, 90];

for (var i = 0; i < rando_array.length; i++) {
  if (rando_array[i] > 28) {
    console.log(rando_array[i] + " is over")
  } else if (rando_array[i] === 28) {
    // Do nothing
    /* Uncomment to log eqaul
    console.log(rando_array[i] + " is equal")
    */
  } else {
    console.log(rando_array[i] + " is under")
  }
};

【讨论】:

  • 这是两种方法中较好的一种,但严格来说并非如此:OP 只想显示 overunder,并没有提及值是否完全匹配。跨度>
  • 感谢您的帮助。代码仍然无法正常工作,但谢谢。
  • @labirtukey 明白了,我看到你更新了你的问题! 5 分钟后接听
  • @labirtukey 查看更新后的答案,肯定能解决问题
  • 非常感谢,我想通了。抱歉,我的代码和问题到处都是。但我肯定明白了,谢谢。
【解决方案2】:
let arr = [2, 40, 31, 29, 9, 12, 41, 90]
const max_value = 28

arr.filter(item => item > max_value).forEach(number => {
        // console logs if num is greater than 28
        console.log(number)
    })

【讨论】:

  • 你为什么要filter这个数组?这完全是错误方法,OP只想根据每个元素的值记录overunder
  • 感谢您的帮助。我还是不明白,但谢谢。
猜你喜欢
  • 2017-03-02
  • 1970-01-01
  • 2020-09-26
  • 2011-11-10
  • 2013-02-28
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
相关资源
最近更新 更多