Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中打印部分字符串_Javascript_String Length - Fatal编程技术网

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

如何在javascript中打印部分字符串,javascript,string-length,Javascript,String Length,我在大学里做了一个练习,我有一个字符串,比如说:“你好”,我想这样打印: 你好,你好 我堆叠的东西是,他们想做它没有循环 有人能帮我吗/ <!DOCTYPE html> <html> <body> <h1>My First Web Page</h1> <p>My first paragraph.</p> <script> var strin = "hello" for (i = 0; i

我在大学里做了一个练习,我有一个字符串,比如说:“你好”,我想这样打印:

你好,你好

我堆叠的东西是,他们想做它没有循环

有人能帮我吗/

    <!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>

我的第一个网页
我的第一段

var strin=“你好” 对于(i=0;i
也许您可以尝试一种递归方法:

function print(word, step){
    if(word.length<step) return;
    console.log(word.substring(1, step));
}
print('hello', 1);
功能打印(字、步){
如果(单词长度使用递归代码:

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

也许有一个更有效的解决方案,但在我看来,这应该是可行的:

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);

你见过……递归吗

您需要实现以下目标(对于字符串“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

你所要做的就是将上述想法转化为干净的无bug代码。

当然我们必须以这种或那种方式循环。然而在下面的代码中,它被伪装成一个递归函数。然而,我完全没有使用计数变量。它有可能欺骗没有经验的人的眼睛。这就是我要做的

函数makeStrings{
var extend=(s,r=[])=>s!==“”?(r.push,extend(s.slice(0,s.length-1),r)):r;
返回extend.reverse().join(“”);
}

console.log(makeStringWeird(“hello”);
我为您准备了两个解决方案。一个是使用reduce函数,它不显式使用任何循环,但当我检查它的polyfill时,它使用while循环进行迭代。下面给出了相应的代码,也可以在这里看到

因为这是使用迭代,所以我又单独使用递归创建了一个

(函数(){
var string=“hello”;
var stringArray=string.split(“”);
var convertedValue=[];
函数转换(初始值、索引){
if(索引
希望这些能有所帮助

如有任何反馈意见,我们将不胜感激


快乐学习:)

听起来像是个骗人的问题?我真的不知道……我想我可以一个接一个地打印出来,但我想在打印之前自杀:我想你需要使用递归。我会在下班后尝试为它写一个解决方案。你一定要使用一个函数……你应该在课堂上注意,因为这看起来像是一个可疑的homework问题,给出直接的、可运行的代码可能不是最好的主意。不过简短的回答很好。
function myPrinter(myString):
  myPrinter(myString - last character of myString);
  print myString; // and maybe some space
  if myString is empty:
    return; // do nothing. just return
(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(""));

})();
(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(""));
})();