Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/126.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 - Fatal编程技术网

Javascript:在每次迭代中逐渐添加到字符串?

Javascript:在每次迭代中逐渐添加到字符串?,javascript,Javascript,我有一个像这样的字符串,它是分开的: var tokens = "first>second>third>last".split(">"); 在每次迭代中,我希望它能够返回 Iteration 0: "last" Iteration 1: "third>last" Iteration 2: "second>third>last" Iteration 3: "first>second>third>last" 我正在考虑对循环使用递减索引

我有一个像这样的字符串,它是分开的:

var tokens = "first>second>third>last".split(">");
在每次迭代中,我希望它能够返回

Iteration 0: "last"
Iteration 1: "third>last"
Iteration 2: "second>third>last"
Iteration 3: "first>second>third>last"
我正在考虑对循环使用递减索引。。。。但有没有更有效的方法

for (int w = tokens.length-1; w == 0; w--)
{

}

这是最简单的方法

var tokens = "first>second>third>last".split(">");

text = ''
for (w = tokens.length-1; w >= 0; w--)
{
    if(text != ''){
        text = tokens[w] + '>'+text;
    }else{
        text = tokens[w]
    }

    console.log(text);
}

你可以尝试以下方法:

var tokens = "first>second>third>last".split(">"); 

for (var w = 0; w < tokens.length; w++)
{
  var substr = tokens.slice(tokens.length - 1 - w, tokens.length).join(">");
  console.log("Iteration " + w + ": " + substr)
}
var-tokens=“第一次>第二次>第三次>最后一次”。拆分(“>”;
for(var w=0;w”;
log(“迭代”+w+:“+substr)
}

您还可以使用join来反转原始拆分。我不确定效率,但很清楚:

var tokens = 'first>second>third>last'.split('>');

for (var i = tokens.length - 1; i >= 0; --i) {
    var subset = tokens.slice(i).join('>');
    console.log(subset);
}

-1.这种基于堆栈的方法简洁但不正确。它颠倒了OP没有要求的代币顺序。使用数组类型的
unshift()
方法应该可以满足您的需要,但在某些版本的Internet Explorer中可能不起作用。@fmark,谢谢,我读得不够仔细,但修复起来很简单。@mikerobi很抱歉是个书呆子,但您的修复版本仍然不正确。现在,它从令牌列表的错误“端”生成输出。您应该在打印前反转
out
变量,而不是输入
令牌
@fmark,这是我在不测试代码的情况下发布代码得到的结果,但我最终更正了它。有趣的是,我的错误答案被接受了。@mikerobi,一个被接受的答案也是让人们修复它的一个巨大激励。你可以通过使用
join()
方法避免使用if语句。
var tokens = "first>second>third>last".split(">"); 

for (var w = 0; w < tokens.length; w++)
{
  var substr = tokens.slice(tokens.length - 1 - w, tokens.length).join(">");
  console.log("Iteration " + w + ": " + substr)
}
var tokens = 'first>second>third>last'.split('>');

for (var i = tokens.length - 1; i >= 0; --i) {
    var subset = tokens.slice(i).join('>');
    console.log(subset);
}