【问题标题】:How to print string in same line without leaving space? [duplicate]如何在不留空格的情况下在同一行打印字符串? [复制]
【发布时间】:2018-10-24 10:05:45
【问题描述】:

我使用 javascript 创建了带有 switch case 的函数。我使用 for 循环来打印所需的输出。

function convert (x){
    switch(x) {
       case "c":
         return "d";
       case "a":
         return "o";
       case "t": 
         return "g";
      }
}
var str = "cat";
for (i = 0; i< str.length; i++){
   console.log(convert(str[i]));
}

我的输出是

d
o
g

但我想在同一行输出,没有空格

【问题讨论】:

  • 我想在浏览器和 Node.js 上输出

标签: javascript


【解决方案1】:

下面的sn-p

  1. spreads将字符串中的字符组成数组;
  2. maps 数组中的每个字符都使用您的 convert() 函数;
  3. joins 将字符重新组合成一个字符串。

然后将该操作的结果传递给console.log() 以打印在一行中。

function convert(x) {
  switch (x) {
    case "c":
      return "d";
    case "a":
      return "o";
    case "t":
      return "g";
  }
}

var str = "cat";

console.log([...str].map(convert).join(''));

【讨论】:

    【解决方案2】:

    对于 DRY 代码,您可以使用 .replace 和替换对象而不是 switch

    const replacements = {
      c: 'd',
      a: 'o',
      t: 'g'
    };
    const str = "cat";
    const convert = str => str.replace(/[cat]/g, char => replacements[char]);
    console.log(convert(str));

    【讨论】:

      【解决方案3】:

      您可以将其保存到某个字符串并稍后打印

      ,而不是登录每个循环

      function convert (x){
      switch(x) {case "c": return "d"; case "a": return "o"; case "t": 
      return "g"; }
      }
      var str = "cat", convertedStr = '';
      for (i = 0; i< str.length; i++){
      convertedStr += convert(str[i]);
      }
      
      console.log(convertedStr)

      【讨论】:

        【解决方案4】:

        console.log 总是写完整的行。如果您想在您的情况下使用console.log 输出"dog",您必须构建字符串,然后在一次调用中输出。

        只需对您的代码进行最少的更改:

        function convert(x) {
          switch (x) {
            case "c":
              return "d";
            case "a":
              return "o";
            case "t":
              return "g";
          }
        }
        var str = "cat";
        var result = "";
        for (i = 0; i < str.length; i++) {
          result += convert(str[i]);
        }
        console.log(result);

        【讨论】:

          【解决方案5】:

          不是向函数发送单个字符,而是发送一个字符数组。在数组上运行一个循环,然后将相关字符推送到另一个数组并加入它们

          function convert(x) {
            let newArray = []
            for (let i = 0; i < x.length; i++) {
              switch (x[i]) {
                case "c":
                  newArray.push("d");
                  break;
                case "a":
                  newArray.push("o");
                  break;
                case "t":
                  newArray.push("g");
                  break;
              }
            }
            return newArray.join('')
          }
          var str = "cat";
          console.log(convert(str.split('')))

          【讨论】:

            猜你喜欢
            • 2010-10-04
            • 1970-01-01
            相关资源
            最近更新 更多