【问题标题】:Looping an array with if and else as well as charAt [duplicate]使用 if 和 else 以及 charAt 循环数组 [重复]
【发布时间】:2021-05-14 19:01:21
【问题描述】:

我是 Javascript 新手,我在 C 方面有一些经验,但我无法弄清楚我在这里做错了什么。到目前为止,Javascript 真的很令人困惑,我不明白它,因为 C 是我知道的除了 HTML 和 CSS 之外的唯一编程语言,我尝试了这两种代码,但它们都不起作用。

我正在尝试使用 for 循环和带有 charAt 的 if else 语句。目标是查看名称数组中的第一个字符,如果该字符是“j”或“J”,则打印出“再见”+名称,如果不是,则打印出“Hello”+名称。我需要转换为 ASCII 吗?任何见解或建议都会非常感谢。这是我在下面尝试过的。

var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];

for (var i = 0; i < names.length; i++) {
  if (names[i].charAt(0) == 'j' || 'J') {
    console.log("Goodbye " + names[i]);
  } else(names[i].charAt(0) !== 'j' || 'J']) {
  console.log("Hello " + names[i]);
}
}

var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"];

var myFunc = function(letter) {
  for (var i = 0; i < letter.length; i++) {
    if (letter[i].charAt(0) == 'j' || 'J') {
      console.log("Goodbye " + letter[i]);
    }
    if (letter[i].charAt(0) !== 'j' || 'J') {
      console.log("Hello " + letter[i]);
    }
  }
}
myFunc(names);

【问题讨论】:

  • if(something == value1 || value2) notsomething 与两个值进行比较。

标签: javascript arrays for-loop if-statement charat


【解决方案1】:
  1. 你应该检查if (names[i].charAt(0) == 'j' || names[i].charAt(0) == 'J')

  2. else 子句不带条件,所以应该是:

else {
    // code here
}

如果您需要检查除初始if 之外的条件,您应该使用:

else if (condition) {
   // code here
}

【讨论】:

  • .charAt(0) 也可以只是[0]。字符串可以像数组一样被索引。
  • 好点@Barmar。没听懂。
【解决方案2】:

第一个问题是:
 if(letter[i].charAt(0)=='j' || 'J'){}

在谈论 js 时,它就像条件句中的 C:0 表示 false,anything 表示 true。
在您的代码中,您应该输入:

if(letter[i].charAt(0)=='j' || letter[i].charAt(0)=='J'){}

因为这是检查是否是两个字母的方式。
第二个是:

if(letter[i].charAt(0)!='j' || 'J'){}

同样的事情也会发生。为了解决这个问题,我建议您使用符号 && 而不是 ||:

if (letter[i].chatAt(0)!='j' && letter[i].charAt(0)!='J'){}

这里我把完整的代码留给你:

var names = ["Yaakov", "John", "Jen", "Jason", "Paul", "Frank", "Larry", "Paula", "Laura", "Jim"]; 
var myFunc = function (letter) { 
for (var i = 0; i < letter.length; i++) { 
if (letter[i].charAt(0) == 'j' || letter[i].charAt(0)=='J') { 
console.log("Goodbye " + names[i]); 
} 
if (letter[i].charAt(0) != 'j' && letter[i].charAt(0)!='J') {
console.log("Hello " + names[i]); }
 } 
 } 

myFunc(names);

我建议你使用这个 for 循环来迭代整个数组,而不是像在 C 中那样将 char 处理为 char:

for(let i in letter){
if (letter[i].charAt(0)=='J'){}
}

我向您保证,从长远来看,这将为您节省更多时间。

【讨论】:

  • 这个答案并不完美,但永远不会。 :)
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 2019-01-23
  • 2023-03-22
  • 1970-01-01
  • 2018-09-03
  • 2022-01-08
  • 2021-08-26
  • 1970-01-01
相关资源
最近更新 更多