识别循环迭代Typescript的当前下一项

时间:2016-08-05 10:00:46

标签: javascript for-loop typescript iterator

在我的TypeScript项目中,我想将Array中的值与下一个值进行比较。如果我在JavaScript中这样做,我会做这样的事情:

//JS
for (var i = 0; i < codeBlocks.length; i++) {
    var j = i + 1;
    if (codeBlocks[i] > codeBlocks[j]) {return true;}
    return false;
}

但是,我非常喜欢Typescript的语法,因为它更具可读性。

//TS
for (let codeBlock of codeBlocks) {
    //logic
}

是否有一种方法可以描述循环的打字稿中的“下一次迭代”值?

6 个答案:

答案 0 :(得分:4)

您可以使用readme

for (var [index, codeBlock] of codeBlocks.entries()) 
{ 
  // your code you can use index 
}

entries()

示例摘录:

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

答案 1 :(得分:1)

如果您想要元素的索引,请使用 foreach 函数:

codeBlocks.forEach((item, index) => {
    console.log(item); // item in the array
    console.log(index); // item index in the array
});

答案 2 :(得分:0)

您可以在TypeScript中使用相同的语法for (var i = 0; i < codeBlocks.length; i++)。但是你的周期只会运行一次。

答案 3 :(得分:0)

没有。这不是的目的。您可以阅读更多相关信息on MDN

您必须使用for (var i = 0; i < codeBlocks.length; i++)语法。

答案 4 :(得分:0)

首先你的javascript代码是错误的,最后一个元素将与undefined

进行比较

也许你应该看看减少函数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

答案 5 :(得分:0)

这是一个生成元素对的生成器:

&#13;
&#13;
function *pairs(array) {
  let prev = array.shift();

  for (v of array) {
    yield [prev, v];
    prev = v;
  }
}

for (let pair of pairs([1,2,3])) { console.log(pair); }
&#13;
&#13;
&#13;

如果你想生成最后一对且未定义的最后一对,那么只需在函数末尾添加yield [prev, undefined];