루프 GET 반복자 VAR을위한 그러나이로 번역되어커피 스크립트 내가</p> <pre><code>arr = ["a","b","c"] for i in [0..arr.length] by 1 if (sometimesTrue) arr.pop() i-- </code></pre> <p>이 커피 스크립트에서
var arr, i, _i, _ref;
arr = ["a", "b", "c"];
for (i = _i = 0, _ref = arr.length; _i <= _ref; i = _i += 1) {
if (sometimesTrue) {
arr.pop();
i--;
}
}
은이 루프 i
를 대신 참조로 _i
을 사용하고 있음을 알 수있다 그래서 내 i--
정말 아무것도하지 않습니다.
이 루프에서는 배열 길이가 바뀌기 때문에 이것을 처리하는 방법을 알아야합니다 ... for 루프를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 아니면 잠시 전환해야합니까?
'sometimesTrue' 정말 무엇을 보는가 : 당신이 믿을 수없는 경우
, 당신은 유사한 커피 스크립트 구문을 사용할 수 많은 자바 스크립트 구현은 배열 프로토 타입에 부착 된 필터 기능이 처럼? 배열을 반복하면서 배열을 수정하는 것은 일반적으로 나쁜 생각입니다 (변경 사항을 고려하더라도). 반면 필터링을하는 동안 오류가 발생하지 않는 경향이 있습니다. 그리고'_ref'보다는'i'를 변경하고 싶습니까? –
그것은 내가 쓰고있는 알고리즘의 일부입니다. 그렇습니다. 그런 식으로 할 수는 있지만, 저는 coffeescript의 반복문에 사용 된 반복자에 접근 할 수있을 것이라고 상상했습니다. – K2xL
루프를 읽을 수 있습니다. 카운터 ('for e, iry in i')하지만 변경할 수는 없습니다. –