developer tip

자바 스크립트.

copycodes 2020. 10. 17. 10:39
반응형

자바 스크립트. 여러 변수에 배열 값을 할당 하시겠습니까?


이 질문에 이미 답변이 있습니다.

var a,b,c;
var arr = [1,2,3];
[a,b,c] = arr;

이 코드는 Firefox에서 완벽하게 작동하여 a = 1, b = 2 및 c = 3
이지만 Chrome에서는 작동하지 않습니다. Chrome 버그
입니까 아니면 유효한 자바 스크립트 코드가 아니십니까? (자바 스크립트 참조에서 찾지 못했습니다)

이 코드를 최소한의 손상으로 Chrome에 적합하도록 수정하려면 어떻게해야합니까?
(나는 a = arr [0]; b = arr [1] ... 또는 항상 arr.shift ()와 동일하게 쓰는 것을 좋아하지 않습니다)

추신 이것은 단지 예제 코드입니다. 실제 코드에서는 코드
외부 어딘가에서 arr 배열을 얻습니다.


이것은 Destructuring assignment 라는 JavaScript 1.7의 새로운 기능입니다 .

Destructuring 할당을 사용하면 배열 및 개체 리터럴의 구성을 미러링하는 구문을 사용하여 배열 또는 개체에서 데이터를 추출 할 수 있습니다.

개체 및 배열 리터럴 식을 사용하면 임시 데이터 패키지를 쉽게 만들 수 있습니다. 이러한 데이터 패키지를 만든 후에는 원하는 방식으로 사용할 수 있습니다. 함수에서 반환 할 수도 있습니다.

비 구조화 할당으로 할 수있는 특히 유용한 작업 중 하나는 다음 예제로 가득 찬 섹션에서 볼 수 있듯이 여러 가지 흥미로운 작업을 수행 할 수 있지만 단일 문으로 전체 구조를 읽는 것입니다.

예를 들어 비 구조화 할당을 사용하여 값을 바꿀 수 있습니다.

var a = 1;
var b = 3;
[a, b] = [b, a];

이 기능은 Perl 및 Python과 같은 언어에있는 기능과 유사합니다.

안타깝게도이 버전 표에 따르면 JavaScript 1.7은 Chrome에서 구현되지 않았습니다. 하지만 다음 위치에 있어야합니다.

  • FireFox 2.0 이상
  • IE 9
  • Opera 11.50.

이 jsfiddle에서 직접 시도해보십시오 : http://jsfiddle.net/uBReg/

나는 이것을 Chrome (실패), IE 8 (실패) 및 FireFox 5 (위키 테이블에 따라 작동 함)에서 테스트했습니다.


@Justin이 이미 답변했듯이 Javascript 1.7에서만 가능합니다. 다음은 널리 사용되는 브라우저에서이를 시뮬레이션하는 시험입니다.

function assign(arr, vars) {
    var x = {};
    var num = Math.min(arr.length, vars.length);
    for (var i = 0; i < num; ++i) {
        x[vars[i]] = arr[i];
    }
    return x;
}
var arr = [1, 2, 3];
var x = assign(arr, ['a', 'b', 'c']);
var z = x.a + x.b + x.c;  // z == 6

얼마나 유용한 지 모르겠습니다.

참고 URL : https://stackoverflow.com/questions/6983026/javascript-assign-array-values-to-multiple-variables

반응형