설정할 자바 스크립트 배열
MSDN은 JavaScript의 Set 컬렉션 추상화를 참조 합니다. .delete()
여러 요소를 이름 으로 제거 ( ) 할 수 있도록 집합으로 변환하려는 개체 배열이 있습니다 .
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
이 배열을 집합으로 어떻게 변환합니까? 더 구체적으로, 위의 배열을 반복하지 않고이 작업을 수행 할 수 있습니까? 문서는 상대적으로 부족합니다 (가능한 경우 변환이 아니라 인스턴스화 된 세트에 충분 함).
키로 제거 하기 위해 Map 으로의 변환을 생각할 수도 있습니다 . 내가 달성하려는 것은 주로 키 (인덱스가 아닌)를 통해 요소에 액세스하여 액세스하거나 수정할 수있는 반복 가능한 컬렉션입니다.
어레이에서 다른 어레이로의 변환이 궁극적 인 목표입니다.
배열을 Set 생성자에 전달하기 만하면됩니다. Set 생성자는 iterable
매개 변수를 받습니다 . Array 객체는 iterable
프로토콜을 구현 하므로 유효한 매개 변수입니다.
var arr = [55, 44, 65];
var set = new Set(arr);
console.log(set.size === arr.length);
console.log(set.has(65));
어떤 레위 말했다 생성자로 전달에 대해 올바른지,하지만 당신은 또한 객체를 사용할 수 있습니다.
나는 무엇을 생각 Veverke가 말하려고하는 것은 쉽게 사용할 수 있다는 것입니다 delete
키워드를 동일한 효과를 달성하기 위해 객체에.
용어로 인해 혼란스러워하시는 것 같습니다. 속성 은 명명 된 인덱스로 사용할 수있는 개체의 구성 요소입니다 (그렇게 생각하고 싶은 경우).
다음과 같이 시도하십시오.
var obj = {
"bob": "dole",
"mr.": "peabody",
"darkwing": "duck"
};
그런 다음 이렇게 할 수 있습니다.
delete obj["bob"];
객체의 구조는 다음과 같습니다.
{
"mr.": "peabody",
"darkwing": "duck"
}
같은 효과가 있습니다.
다음으로 시작하는 경우 :
let array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
그리고 당신은 일련의 이름을 원합니다.
let namesSet = new Set(array.map(item => item.name));
정의에 따르면 "세트는 각 값이 한 번만 발생할 수있는 값 모음입니다." 따라서 배열에 반복되는 값이있는 경우 반복되는 값 중 하나만 세트에 추가됩니다.
var arr = [1, 2, 3];
var set = new Set(arr);
console.log(set); // {1,2,3}
var arr = [1, 2, 1];
var set = new Set(arr);
console.log(set); // {1,2}
따라서 배열에 반복되는 값이있는 경우 세트로 변환하지 마십시오.
참고 URL : https://stackoverflow.com/questions/28965112/javascript-array-to-set
'Programming' 카테고리의 다른 글
groupby 개체를 인쇄하는 방법 (0) | 2020.08.28 |
---|---|
요구 사항 tensorflow를 충족하는 버전을 찾을 수 없습니다. (0) | 2020.08.28 |
AngularJS에서 격리 된 범위없이 지시문에서 컨트롤러 함수 호출 (0) | 2020.08.28 |
신속한 코드 실행의 진입 점은 무엇입니까? (0) | 2020.08.28 |
PropTypes 대 흐름 반응 (0) | 2020.08.28 |