Programming

설정할 자바 스크립트 배열

procodes 2020. 8. 28. 08:22
반응형

설정할 자바 스크립트 배열


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

반응형