[javascript] JavaScript에서 배열을 별도의 변수로 압축 풀기

이것은 간단한 문제이며 이전에 해본 적이 있습니다. 나는 그것이 어떻게, 또는 정확히 무엇이 불렀는지 기억할 수 없습니다.

파이썬에서 나는 이것을 할 수 있습니다 :

arr = ['one', 'two']
one, two = arr

JavaScript로 어떻게합니까?



답변

이것은 현재 브라우저 간 호환 가능한 유일한 솔루션 AFAIK입니다.

var one = arr[0],
    two = arr[1];

ES6은 다음과 같은 구조적 할당을 허용합니다.

let [x, y] = ['foo', 'bar'];
console.log(x); // 'foo'
console.log(y); // 'bar'

또는 초기 예를 고수하십시오.

var arr = ['one', 'two'];
var [one, two] = arr;

기본값을 만들 수도 있습니다.

const [one = 'one', two = 'two', three = 'three'] = [1, 2];
console.log(one); // 1
console.log(two); // 2
console.log(three); // 'three'


답변

그것은 할당을 파괴하고 있습니다. 다음과 같은 구문으로 일부 브라우저에서 수행 할 수 있습니다.

[one, two] = arr;

BabelTraceur 와 같은 일부 최신 브라우저 및 트랜스 필러에서 지원됩니다 . 이것은 ECMAScript 4에서 도입 된 기능으로 나중에 ECMAScript Harmony가되었으며 결국 ES 2015가되었습니다.


답변

질문은 다소 오래되었지만이 대안 (2016) 솔루션을 게시하고 싶습니다 : 스프레드 연산자 “…”를 사용할 수도 있습니다 .

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

let xAndY = [42, 1337];
let f = function(x, y) { return x + y; };
f(...xAndY);


답변

배열 항목을 함수 인수로 전달하려면 배열의 적용 함수를 사용할 수 있습니다.


답변

진지한 아이디어의 구현.

http://jsfiddle.net/RichAyotte/6D2wP/

(function(a, b, c, d) {
    console.log(a, b, c, d);
}.apply(this, ['a', 'b', 'c', 'd']));


답변

var one = arr[0];
var two = arr[1];


답변

CoffeeScript에는 다음이 있습니다. http://jashkenas.github.com/coffee-script/#pattern_matching

그리고 페이지 상단에서 인용했습니다.

“CoffeeScript는 JavaScript로 컴파일되는 작은 언어입니다. JavaScript는 덜 유쾌한 동생이라고 생각하십시오. 같은 유전자, 대략 같은 높이이지만 다른 스타일 감각입니다. 소수의 보너스 혜택 외에도 CoffeeScript의 문장은 하나에 해당합니다. “자바 스크립트에서 동등한 기능을 갖춘 것으로, 또 다른 방법입니다.”