Javascript 标识当前循环中的下一项,用于迭代类型脚本
在我的TypeScript项目中,我想将数组中的值与下一个值进行比较。如果我在JavaScript中执行此操作,我会执行以下操作:Javascript 标识当前循环中的下一项,用于迭代类型脚本,javascript,for-loop,typescript,iterator,Javascript,For Loop,Typescript,Iterator,在我的TypeScript项目中,我想将数组中的值与下一个值进行比较。如果我在JavaScript中执行此操作,我会执行以下操作: //JS for (var i = 0; i < codeBlocks.length; i++) { var j = i + 1; if (codeBlocks[i] > codeBlocks[j]) {return true;} return false; } 有没有一种方法可以在typescript中描述循环的…的“下一次迭
//JS
for (var i = 0; i < codeBlocks.length; i++) {
var j = i + 1;
if (codeBlocks[i] > codeBlocks[j]) {return true;}
return false;
}
有没有一种方法可以在typescript中描述循环的…的“下一次迭代”值?您可以在typescript中对(var i=0;i
。但是你的周期只运行一次。不。这不是的目的。。属于。你可以阅读更多关于它的内容
您必须使用for(var i=0;i
语法
示例代码段:
var test = ['a','b','c']
for (var [index, cur] of test.entries())
{
var j = index + 1;
console.log("Current value: "+cur+" Next value: "+test[j])
}
如果需要元素的索引,请使用foreach函数:
codeBlocks.forEach((item, index) => {
console.log(item); // item in the array
console.log(index); // item index in the array
});
首先,您的javascript代码是错误的,最后一个元素将与未定义的进行比较
也许您应该看看reduce函数这是一个生成成对元素的生成器:
函数*对(数组){
设prev=array.shift();
对于(数组的v){
收益率[prev,v];
prev=v;
}
}
对于(让成对的([1,2,3]){console.log(pair);}
if(codeBlocks[i]>codeBlocks[i+1])代替if(codeBlocks[i]>codeBlocks[j])@BunkerBoy,我只是想在TypeScript中实现它,这个例子只是为了帮助解释这个问题。他如何在循环体中获得下一个值?我明白了。嗯,我认为这是一个很好的例子,它的语法看起来不同而且有点复杂。您可以使用foreach
而不是for
来提高代码的可读性。这就是它的目的。@GeorgeEdwards for..of不是特定于类型脚本的语法。这是ES6标准的一部分。不过,这并不是为了让您能够对数组进行索引访问。是的,但我的目标是es5和TypeScript编译,目的是为了…你所发布的内容,所以说“这不是目的”没有任何意义,“错”是相对的。通常,与未定义的进行比较将完全符合要求。您所说的“您的循环只运行一次”是什么意思?@torazaburo在循环的第一次运行中,它总是从函数返回。这意味着它在第一次运行时就打破了循环,但他的问题是“有没有一种方法可以在typescript中描述……of循环的“下一次迭代”值?”
var test = ['a','b','c']
for (var [index, cur] of test.entries())
{
var j = index + 1;
console.log("Current value: "+cur+" Next value: "+test[j])
}
codeBlocks.forEach((item, index) => {
console.log(item); // item in the array
console.log(index); // item index in the array
});