CoffeeScript에서 배열에 값을 어떻게 추가합니까?


98

CoffeeScript의 배열에 값을 추가하는 규정 된 방법은 무엇입니까? PragProg CoffeeScript 책을 확인했지만 생성, 슬라이스 및 스 플라이 싱 및 반복에 대해서만 설명하고 추가는 설명하지 않습니다.

답변:


192

좋은 옛날은 push여전히 작동합니다.

x = []
x.push 'a'

9
여기에 PragProg 책의 저자 . Thilo의 답변에 +1. 나는 Array이미 좋은 자바 스크립트 문서가 많이 있기 때문에이 책에서 프로토 타입 메소드 를 다루고 싶지 않았습니다 . 예를 들어, developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
Trevor Burnham

캐릭터가 아닌 물체가 있다면 어떨까요?
Gaʀʀʏ

나는 일을 기대하고 있었다 x << 'a'.
Chloe

49

훨씬 더 나은 것은 목록 이해력을 사용하는 것입니다.

예를 들어 이것보다는 :

things = []
for x in list
  things.push x.color

대신 다음을 수행하십시오.

things = (x.color for x in list)

23
그것은 목록의 값을 사물에 추가하지 않습니다. 그것은 사물 배열을 완전히 대체합니다. 나도 그것을 테스트했습니다.
ajsie

글쎄, ajsie, 당신이 맞습니다. 그것은 추가하는 것이 아니라 대체합니다. 그러나 요점은 일반적으로 밀어 넣을 때 어쨌든 배열 이해 와 같은 일을 종종 수행한다는 것 입니다. 모든 경우는 아니지만, 많은 시간이 소요됩니다.
suranyami

3
@suranyami 반대로, 나는 그것을 위해 좋은 사용을 생각할 수 없습니다. 나는 훨씬 차라리 그렇게 할 것 things = list입니다. 훨씬 더 간결합니다.
Michael Dorst 2013

@suranyami 링크가 죽었습니다.
derekdreery

@anthropomorphic 물론입니다. 인위적인 예입니다. 하자 말 대신이 같은 그것의 무엇인가 : colors = (item.color for item in list)
suranyami

2

호출을 연결하는 경우 추가가 길이가 아닌 배열을 반환하기를 원합니다. 이 경우 .concat ([newElement])를 사용할 수 있습니다.

concat이 연결하는 배열과 같은 배열을 예상하므로 [newElement] 여야합니다. 효율적이지 않지만 올바른 설정에서 멋지게 보입니다.


연결 호출은 "효율적이지 않은 방법"이라고 말했듯이 할 수있는보다 세련된 작업 concat입니다. 배열 A + 배열 B의 요소로 구성된 새 배열을 반환합니다. 개체에 대한 참조는 유지되므로 참조 된 개체에 대한 변경 사항이 유지됩니다. 배열 A, 배열 B 또는 concat 결과는 다른 배열에도 반영됩니다.
SidOfc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.