Set 은 유일무이 한 방식으로 호출되는 generator [Set] .values를 제외하고는 고유 한 요소로 배열을 생성하는 좋은 방법 인 것 같지만 속성을 얻는 좋은 방법을 노출시키지 않습니다 mySet.values.next()
.
map
세트에서 비슷한 함수를 호출 할 수 있다면 이것은 좋을 것 입니다. 그러나 당신도 그렇게 할 수 없습니다.
시도 Array.from
했지만 배열과 같은 (NodeList 및 TypedArrays?) 객체 만 Array로 변환하는 것 같습니다. 또 다른 시도 : Object.keys
세트에서는 작동하지 않으며 Set.prototype에는 비슷한 정적 메소드가 없습니다.
그래서 질문 : 주어진 Set의 값으로 배열을 만드는 편리한 내장 메소드가 있습니까? (요소의 순서는 실제로 중요하지 않습니다).
그러한 옵션이 존재하지 않는다면, 그렇게하기위한 좋은 관용적 인 라이너가 있습니까? 같은, 사용 for...of
, 또는 유사한?
답변
그러한 옵션이 존재하지 않는다면, 그렇게하기위한 좋은 관용적 인 라이너가 있습니까? for … of 또는 이와 유사한 것을 사용 하는가?
실제로 Set 을 Array 로 변환하는 몇 가지 방법이 있습니다 .
사용 Array.from
let array = Array.from(mySet);
간단히 spreading
배열로 설정
let array = [...mySet];
구식 방식으로 반복하고 새로운 배열로 푸시 (Sets have forEach
)
let array = [];
mySet.forEach(v => array.push(v));
이전에는 비표준이고 더 이상 사용되지 않는 배열 이해 구문을 사용합니다.
let array = [v for (v of mySet)];
답변
https://speakerdeck.com/anguscroll/es6-uncensored 를 통해Angus Croll의 를
spread
연산자 를 사용할 수 있습니다 .
var myArr = [...mySet];
또는 다음을 사용하십시오 Array.from
.
var myArr = Array.from(mySet);
답변
답변
파티에 늦었을 수도 있지만 다음을 수행 할 수 있습니다.
const set = new Set(['a', 'b']);
const values = set.values();
const array = Array.from(values);
ES6를 지원하는 브라우저에서 또는 위 기능을 올바르게 채우는 shim이있는 경우 문제없이 작동합니다.
편집 : 오늘 @ c69가 제안하는 것을 사용할 수 있습니다.
const set = new Set(['a', 'b']);
const array = [...set]; // or Array.from(set)
답변
원하는 결과를 얻으려면 스프레드 연산자를 사용하십시오.
var arrayFromSet = [...set];
답변
내 경우에는 해결책은 다음과 같습니다.
var testSet = new Set();
var testArray = [];
testSet.add("1");
testSet.add("2");
testSet.add("2"); // duplicate item
testSet.add("3");
var someFunction = function (value1, value2, setItself) {
testArray.push(value1);
};
testSet.forEach(someFunction);
console.log("testArray: " + testArray);
value1은 value2와 같습니다 => 세트의 현재 위치에 포함 된 값입니다. 두 인수 모두에 동일한 값이 전달됩니다.
IE11에서 일했습니다.
답변
Set을 사용 하여 배열로 변환하는 것은 배열을 복사하는 것과 매우 유사합니다 …
따라서 ES6 에서 매우 쉬운 배열 복사에 동일한 방법을 사용할 수 있습니다
예를 들어 ...
아래에이 세트가 있다고 상상해보십시오.
const a = new Set(["Alireza", "Dezfoolian", "is", "a", "developer"]);
다음을 사용하여 간단히 변환 할 수 있습니다.
const b = [...a];
결과는 다음과 같습니다.
["Alireza", "Dezfoolian", "is", "a", "developer"]
배열과 배열에 사용할 수있는 모든 방법을 사용할 수 있습니다.
그것을하는 다른 일반적인 방법 :
const b = Array.from(a);
또는 다음과 같은 루프를 사용하십시오.
const b = [];
a.forEach(v => b.push(v));