programing

CoffeeScript에서 객체의 키와 값을 반복하는 방법?

muds 2023. 10. 8. 10:24
반응형

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

반응형