객체 (일반 자바 스크립트 객체라고도하는 “연관 배열”)가 있습니다.
obj = {}
obj["Foo"] = "Bar"
obj["bar"] = "Foo"
obj
다음과 같이 CoffeeScript를 사용하여 반복하고 싶습니다 .
# CS
for elem in obj
bu 위의 CS 코드는 JS로 컴파일됩니다.
// JS
for (i = 0, len = obj.length; i < len; i++)
이 경우에는 적합하지 않습니다.
JavaScript 방식 for(var key in obj)
이지만 지금 은 궁금합니다. CoffeeScript에서 어떻게 할 수 있습니까?
답변
사용하십시오 for x,y of L
. 관련 문서 .
ages = {}
ages["jim"] = 12
ages["john"] = 7
for k,v of ages
console.log k + " is " + v
출력
jim is 12
john is 7
for own k,v of ages
주석에서 Aaron Dufour가 언급 한 변형을 고려할 수도 있습니다 . 프로토 타입에서 상속 된 속성을 제외하는 검사를 추가합니다.이 예제에서는 문제가되지 않지만 다른 것들을 기반으로 구축하는 경우가 있습니다.
답변
배열을 초기화하고 있지만 객체처럼 사용하고 있습니다 (js에는 “연관 배열”이 없습니다).
객체를 반복 할 때 다음과 같은 구문을 사용하십시오.
for key, val of arr
console.log key + ': ' + val
답변
단선 루프로 사용할 수있는 배열 이해를 사용하는 숏 핸드 버전입니다.
console.log index + ": " + elm for index, elm of array
배열 이해 :
“포괄 옵션은 선택적 가드 절과 현재 배열 인덱스의 값으로 for 루프를 대체하고 컴파일합니다. for 루프와 달리 배열 이해는 표현식이며 반환 및 할당 될 수 있습니다.”,
http://coffeescript.org/ # 루프
답변
규칙에 따라 arr은 배열이지만 “foo”는이 배열의 속성이며 인덱스 된 값이 아닙니다. 배열의 인덱스 값을 데이터에 저장하려면 다음과 같이 작성해야합니다.
arr1 = []
arr1[0] = "Bar"
arr1[1] = "Foo"
또는 연관 배열을 원하면 객체를 사용하십시오.
arr2 = {}
arr2["Foo"] = "Bar" // equivalent to arr2.foo="Bar"
arr2["bar"] = "Foo" // equivalent to arr2.bar="Foo"
arr1을 반복하려면 :
str = "values are : "
for val in arr2
str += val + " |"
console.log key + ': ' + val
반환 :
values are : Bar | Foo |
arr2를 반복 : “배열의 값”
for key, val of arr
console.log key + ': ' + val
다음을 반환합니다.
Foo : Bar
Bar : Foo