CoffeeScript에서 객체의 키와 값을 반복하는 방법?
객체(예를 들어 "associate array" - 일반 자바스크립트 객체라고도 함)가 있습니다.
obj = {}
obj["Foo"] = "Bar"
obj["bar"] = "Foo"
나는 반복하고 싶습니다.obj
다음과 같이 CoffeeScript를 사용합니다.
# CS
for elem in obj
그러나 위의 CS 코드는 JS로 컴파일됩니다.
// JS
for (i = 0, len = obj.length; i < len; i++)
이 경우에는 적절하지 않은 것 같습니다.
자바스크립트 방식은for(var key in obj)
커피스크립트에서는 어떻게 해야 할까요?
사용하다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
애런 듀포가 댓글에서 언급한 바와 같이.이렇게 하면 프로토타입에서 상속된 속성을 제외하기 위한 검사 항목이 추가됩니다. 이 예제에서는 문제가 아닐 수 있지만 다른 항목 위에 구축하는 경우일 수 있습니다.
배열을 초기화하고 있지만 개체처럼 사용하고 있습니다(js에는 "연관 배열"이 없습니다).
개체 위에서 반복하는 구문(같은 것)을 사용:
for key, val of arr
console.log key + ': ' + val
한 줄 루프로 사용할 수 있는 배열 이해력을 사용한 짧은 손 버전.
console.log index + ": " + elm for index, elm of array
배열 이해는 다음과 같습니다.
"컴플렉션은 옵션 가드 절과 현재 배열 인덱스 값으로 루프를 대체(및 컴파일)합니다.루프의 경우와는 달리 배열 이해는 식이므로 반환 및 할당할 수 있습니다. http://coffeescript.org/ # 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
언급URL : https://stackoverflow.com/questions/6408726/how-to-iterate-over-the-keys-and-values-in-an-object-in-coffeescript
'programing' 카테고리의 다른 글
AngularJS에서 행을 각각 2개씩 더 반복하는 방법 (0) | 2023.10.08 |
---|---|
레일 3 + angularjs + minization은 생산 시 작동하지 않습니다.알 수 없는 공급자: eProvider (0) | 2023.10.08 |
오류 유효성 검사가 보존된 AJAX 양식(simple_form 사용) (0) | 2023.10.08 |
T-SQL에 존재하는 경우 (0) | 2023.10.08 |
PowerShell에서 배열 평탄화 (0) | 2023.10.08 |