【问题标题】:Write a function which takes a sentence as an input and output a sorted sentence编写一个函数,输入一个句子,输出一个排序好的句子
【发布时间】:2019-03-14 11:41:13
【问题描述】:

我需要编写一个函数,它将一个句子作为输入并输出一个排序后的句子。并且有两个标准:

  1. 单词的每个字符应按字母顺序排列

  2. 单词应根据其字符数按升序排列

注意:-单词只能有小写字母

例子:

输入 str = "她和他住在一间小公寓里"

输出 = "a in ehs him hitw eilsv allms aaemnprtt"

这是我的代码。

function makeAlphabetSentenceSort(str) {

  var sens = str.split(' ');
  sens.sort(function(a, b) {
    return a.length - b.length;
    console.log(sens);
  });



  function alphaSort(b) {

    var x = b.split("");
    console.log(x.sort().join(""));

  }


  for (var i = 0; i <= sens.length - 1; i++) {
    console.log(alphaSort(sens[i]));

  }

}

console.log(makeAlphabetSentenceSort("she lives with him in a small enter code hereapartment"));

我对如何解决这个问题感到困惑。有什么建议吗?

【问题讨论】:

  • 这里有几个问题。首先,makeAlphabetSentenceSort 中的console.log 永远不会触发,就像在return 之后一样。其次,你应该在你的函数中使用retrun,而不是console.log

标签: javascript sorting


【解决方案1】:

看来您的代码大部分都有效。通过将console.log(x.sort().join("")); 替换为return x.sort().join("");,我能够获得正确的输出

我还必须删除 console.log(alphaSort(sens[i]));,以便将循环输出存储在名为 output 的临时变量中,然后将整个循环输出作为字符串返回。

function makeAlphabetSentenceSort(str) {

  var sens = str.split(' ');  
  sens.sort(function(a, b){
      return a.length - b.length;
  });



  function alphaSort(b){

    var x = b.split("");
    return x.sort().join("");

  }

  var output = "";
  for(var i = 0; i <= sens.length - 1; i++){
     output += alphaSort(sens[i]) + " ";
  }
  return output.trim();
}

console.log(makeAlphabetSentenceSort("she lives with him in a small apartment"));

为了可读性,我也将代码重写如下:

  1. 将 alphaSort 作为函数移除,因为它不需要是当前上下文中的函数。
  2. 使用let 关键字而不是var 关键字来实例化output 变量。
  3. 在函数顶部实例化output变量(因为这是JS真正的工作方式)

function makeAlphabetSentenceSort(str) {
   let output = "";

  // Sort the initial sentence by words alphabetically.
  var sens = str.split(' ');  
  sens.sort(function(a, b){
      return a.length - b.length;
  });
  
  for(var i = 0; i <= sens.length - 1; i++){
    // Split each word into single characters. Sort the characters and 
    //   join them back as a single string.
    output += sens[i].split("").sort().join("");
    
    // Because we want the response to look like a sentence.
    output += " ";
  }
  
  return output.trim();
}

console.log(makeAlphabetSentenceSort("she lives with him in a small apartment"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多