因此,我正在做一个练习,其中必须对给定的字符串进行排序。字符串中的每个单词都包含一个数字(写为“ H3llo”)。字符串中每个单词中的数字应根据要返回的新字符串中的数字进行排序。

例如,如果我的输入是“ is2 Thi1s T4est 3a”,那么我的函数应返回“ Thi1s is2 3a T4est”。

我几乎破解了,但输出不完整。这是我的代码:

function order(words) {
    var lst = words.split(' ');
    var count = 0;
    var n = count + 1;
    var s_n = n.toString();
    var new_l = [];
    while (count < lst.length) {
        if (lst[count].includes(s_n) === true) {
            new_l.push(lst[count])
        }
        count++
    }
    return new_l.join(' ');
}


当我测试它时,没有得到:

console.log(order("is2 Thi1s T4est 3a"));
>>> 'Thi1s is2 3a T4est'


我得到这个:

console.log(order("is2 Thi1s T4est 3a"));
>>> 'Thi1s'


谁能向我解释我做错了什么?

最佳答案

您基本上将需要两个loops-一个用于当前计数器count,即递增数字,另一个用于迭代单词列表以匹配该数字。仅在完成对列表的迭代之后,才增加计数。



function order(words) {
  var lst = words.split(' ');
  var count = 0;
  var new_l = [];
  while (count <= lst.length) {
    for (i = 0; i < lst.length; i++) {
      if (lst[i].includes(count)) {
        new_l.push(lst[i])
      }
    }
    count++;
  }
  return new_l.join(' ');
}
console.log(order("is2 Thi1s T4est 3a"));





还要注意,您不需要s_n-转换是隐式的,并且您不需要=== true,因为这在if语句中是隐式的。

10-06 11:57