표준(standard)는 어떤 기술적 한물이 어떻게 만들어지고 어떻게 작도하도록 되어 있는지 명확하고 상세하게 기술한 것이다. 무언가가 어떻게 만들어지고 작동하는지 정의하는 정규화된 표현을 띃한다. 보통 정부 기관이나 컨소시엄 같은 준중립적인 단체에 의해 개발되고 유지된다.
주변에서 볼 수 있는 표준의 예로는 콘센트(국가별로 다를 수도 있다.), HDMI/USB 케이블 등이 있다. 소프트웨어에서 규정된 표준으로는 아스키코드와 유니코드 같은 문자 집합, C와 C++ 같은 프로그래밍 언어, 프로토콜등이 포함된다.
프로그래머가 작성하는 코드를 소스 코드라고 하며 이를 프로세서에서 실행하기에 적합한 형태로 컴파일한 결과를 오브젝트 코드라고 한다. 보통 소스 코드는 가치가 큰 비밀 정보이므로 영업 비밀로서 공개되지 않는다. 하지만 연구와 개선 활동을 위해 다른사람들도 소스 코드를 자유롭게 사용할 수 있도록 공개하는 오픈소스도 있다. 파이어폭스나 크롬 브라우저, 아파치(Apache)와 엔진엑스(Ngnix), 안드로이드 운영체제, 리눅스 운영체제 등이 오픈소스이다.
중복을 허용하지 않는 값을 모아놓은 특별한 컬렉션으로 Set에는 키가 없는 값이 저장된다.
const testSet = new Set(['a', 'a', 'b', 'c', 'b', 'd'])
console.log(testSet) // 'a', 'b', 'c', 'd'
const set = new Set()
set.add(1)
set.add(2)
console.log(set) // 1, 2
console.log(set.has(1)) // true
console.log(set.has('1')) // false
set.delete(2)
console.log(set.has(2)) // false
set.clear()
console.log(set.size) // 0
const set = new Set(['a', 'a', 'b', 'c', 'b', 'd'])
for (let key of set.keys()) {
console.log(key) // 'a', 'b', 'c', 'd'
}
for (let value of set.values()) {
console.log(value) // 'a', 'b', 'c', 'd'
}
for (let entry of set.entries()) {
console.log(entry) // ['a', 'a'] ['a', 'a'] ['a', 'a']
}
keys() 와 values()가 같은 값을 리턴해주는 것과 entries()가 [value, value] 형태로 값을 리턴해주는 것을 볼 수 있는데 이는 Map과의 호환성을 위해 사용된다.
오늘의 한줄
Set객체에 대한 정리를 하였는데 기존에 중복값 처리 시 for문을 통해 직접 만들었는데 Set을 사용해서
중복처리를 하고 다시 Map과의 호환성을 사용하여 처리를 할 수 있겠다는 생각이 들었다.