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