【问题标题】:How to edit a characters in a string, and remove characters that editing conditions apply to如何编辑字符串中的字符,并删除编辑条件适用的字符
【发布时间】:2019-01-25 20:42:12
【问题描述】:

我试图从用户那里获取一个数字,将数字显示为一个范围,然后用字符串替换数字 3 的实例,用字符串替换数字 2 的实例,以及数字 1 的实例用字符串。如果函数检测到 3,我希望它用字符串替换它,删除 3 的实例,并忽略替换 2 和 1 的条件。当它看到 2(但不是 2)时也是如此。

我有函数从用户那里获取数字,将其转换为字符串,然后使用 for 循环将其显示为范围。

在 for 循环中,我使用 .includes 来查找“3”。当它看到一个时,它会将字符串“I'm sorry Dave, I can't do that”推送到显示范围的同一列表中。

我已尝试使用 if/else if 语句让循环在第一次看到 3 时忽略 2 和 1 的条件,但是它将所有条件应用于 3,2 或 1 的所有实例。

function numTranslate(inputNumber){
  var numList = [];
  var num = inputNumber

for (i = 0; i<= num; i++){

var numString = i.toString();

if (numString.includes('3')) {
  numList.push("I'm sorry Dave, I can't do that")
} 

else if (numString.includes('2')) {
  numList.push("boop!")
}
else if (numString.includes('1')) {
  numList.push("beep!")
}

  numList.push(i)
}
return numList;
}

我得到了什么

输入:9

输出:0,beep!,1,boop!,2,对不起 Dave,我做不到,3,4,5,6,7,8,9,

我想要什么:

输入:9

输出:1,2,对不起,戴夫,我做不到,4、5、6、7、8、9

【问题讨论】:

标签: javascript


【解决方案1】:

如果您想要该输出,请删除 1 和 2 的 if 子句。除了这 2 个 if 子句之外,您的代码工作正常。另外,如果您想忽略 0,请从 1 开始。

另外一件事,你到底为什么要把它转换成一个字符串,然后检查字符串是否包含字符?这些是数字,对它们进行数字操作。您通过转换它们并检查转换来增加不必要的开销。


function numTranslate(inputNumber){
  var numList = [];
  var num = inputNumber

for (i = 1; i<= num; i++){
    if(i === 3){
        numList.push("I'm sorry Dave, I can't do that");
    }else{
        numList.push(i);
    }
}
return numList;
}

console.log(numTranslate(9));

【讨论】:

  • 我不认为你可以在数字上做 .includes 吗?我试过了,它不会让我运行该方法
  • 我的意思是你为什么要把它转换成字符串?您实际上只是在检查 i 的值。那为什么要把它转换成字符串呢?如果你想在你的 end 数组中有一个字符串,只需使用 .toString()。
  • @JackCollins 将 int 重新输入到字符串并将字符串与数字进行比较是非常糟糕的。
  • 我的意思是@daremachine 所说的。没有理由重新键入以对新值进行比较。只做实际的数字检查。
  • 哦,我明白了。感谢那。我了解到我不需要做 .includes 如果我只是做了 i===num
【解决方案2】:

这是一个简单的方法。

function numTranslate(inputNumber){
 return Array.from(Array(inputNumber), function (value, index) {
 var i = index+1;
 if (i== 1 || i==2){
   return "beep!";
   }

 if (i== 3){
   return "I'm sorry Dave, I can't do that";
 }
 return i.toString()

});
}

console.log(numTranslate(9))

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 2011-02-25
    • 2013-11-22
    • 2019-12-26
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多