如何在javascript中打印部分字符串

时间:2016-06-16 21:25:57

标签: javascript string-length

我有一个来自我大学的练习,我有一个字符串让我说我有:“你好”,我想打印出来:

hhehelhellhello(嗨,他好,你好)。

我堆叠的东西是他们想要在没有循环的情况下做到这一点!

任何人都可以帮助我吗? :/

    <!DOCTYPE html>
<html>
<body>

<h1>My First Web Page</h1>
<p>My first paragraph.</p>

<script>
var strin = "hello" 
for (i = 0; i < strin.length; i++) {
   document.write(strin.slice(0,i+1))
}


</script>

</body>
</html>

6 个答案:

答案 0 :(得分:4)

使用递归。代码:

function r (s, i) {
 if (i == undefined) i = 0;
 if (i == s.length) return "";
 return s.slice(0, i + 1) + r(s, i + 1);
}

r("hello"); // hhehelhellhello

答案 1 :(得分:1)

可能有一个更有效的解决方案,但不管怎样,这应该可行:

var s = "hello";
var index = 0;
var len = 1;
var newString = '';

function appendToResult(str, index, len) {
  newString += str.slice(index, len);
  len++;
  if (len !== s.length + 1) {
    appendToResult(s, index, len);
  }
}

appendToResult(s, index, len);
console.log(newString);

答案 2 :(得分:0)

也许你可以尝试递归方法:

function print(word, step){
    if(word.length<step) return;
    console.log(word.substring(1, step));
}
print('hello', 1);

答案 3 :(得分:0)

你见过......递归?

你需要实现的是这样的事情(对于字符串&#34;你好&#34;):

h
he
hel
hell
hello

对方法的递归调用(例如,myPrinter())可能表现相似:

call myPrinter(hello):
  call myPrinter(hell):
    call myPrinter(hel):
      call myPrinter(he):
        call myPrinter(h):
          print 'h'
        print 'he'
      print 'hel'
    print 'hell'
  print 'hello'
done

那么我们如何编写这种神奇的方法呢?

请注意,在每次调用时,我们再次调用我们的方法,但输入较短(实际上,输入已被截断的一个字符截断)。

你可以这样写:

function myPrinter(myString):
  myPrinter(myString - last character of myString);
  print myString; // and maybe some space
  if myString is empty:
    return; // do nothing. just return

您需要做的就是将上述想法转化为干净的无错误代码。

答案 4 :(得分:0)

当然,我们必须以这种方式或那种方式循环。然而在下面的代码中,它伪装成递归函数。然而,我根本不使用计数变量。它有可能欺骗缺乏经验的眼睛。我就是这样做的;

&#13;
&#13;
function makeStringWeird(s){
  var extend = (s, r=[]) => s !=="" ? (r.push(s),extend(s.slice(0,s.length-1),r)) : r;
return extend(s).reverse().join("");
}
console.log(makeStringWeird("hello"));
&#13;
&#13;
&#13;

答案 5 :(得分:0)

我为你准备了两个解决方案。一种是使用reduce函数,它没有明确地使用任何循环但是当我检查它的polyfill时它使用while循环来迭代。下面给出了代码,也可以在这个小提琴https://jsfiddle.net/vatsalpande/42590tre/

中看到
(function(){

 var convertedString = [];
  function reducer(previousValue, currentValue){
    convertedString.push(previousValue+currentValue);  
    return previousValue+currentValue;
        }

  var string = "hello";
  var stringArray = string.split("");

  var totalVersion= stringArray.reduce(reducer,"");

  console.info(convertedString.join(""));

})();

由于这是使用迭代我通过单独使用递归创建了一个。下面是代码和小提琴链接 https://jsfiddle.net/vatsalpande/tnxsuw75/

(function(){
var string = "hello";
var stringArray = string.split("");
var convertedValue = [];
function convert(initialValue, index){
  if(index < stringArray.length){
    convertedValue.push(initialValue+stringArray[index]);
    convert(initialValue+stringArray[index], index+1);
  }
}
convert("",0);
console.info(convertedValue.join(""));
})();

希望这些能有所帮助。

我们非常感谢任何改善它们的反馈。

快乐学习:)