let memberObject = {
manager : 'kyeongi',
developer : 'suri',
designer: 'masuri',
["data scientist"] : 'haru'
}
: 콜론으로 구분하고, 쌍은 , 쉼표로 구분해주고 전체 데이터는 {} 중괄호로 감싼다.한 사람의 정보를 담기 위한 다양한 변수가 필요하다고 가정해보자. 배열은 데이터가 순서로 나열되어 있을 뿐, 각각의 엘리먼트가 어떤 의미를 가지는지 알 수 없다. 이 때, 객체를 사용할 수 있다.
배열의 엘리먼트는 순서를 가지고 있어 index로 값에 접근하지만, 객체의 value는 의미를 가지고 있고 key를 통해서 값에 접근한다.
대량의 정보를 담고 한꺼번에 처리할 때 사용된다.
memberObject.singer = 'junga' // 추가
memberObject.designer = 'musuri' // 변경
delete memberObject.developer; // 삭제
console.log(memberObject.designer); // 조회
console.log(memberObject["developer"]); // 조회 - 삭제 되어 undefined (객체에 없는 키를 조회하면 undefined 리턴)
let isPresent = 'developer' in memberObject; // false
let hasProperty = 'singer' in memberObject; // true
객체의 속성을 조회하는 두 가지 방법이 있다. 사실 '다루는' 이라고 말하는 게 더 정확할 것 같기도 하다.
dot notation : 점.으로 접근한다. bracket notation : 대괄호[]로 접근한다. 객체에 반복문을 응용해서 대량의 정보를 다룰 수 있다. 객체는 순서가 없기 때문에 반복문으로 인덱스를 0부터 시작해서 사용하면 안 된다.
for in 구문을 통해서 객체의 모든 key에 접근하고 출력할 수 있다.
for (let key in memberObject) {
console.log(`${key} : ${memberObject[key]}`);
}
function extend(obj1, obj2) {
for (let key in obj2) {
if (!(key in obj1)) {
obj1[key] = obj2[key];
}
}
}
string과 array, 유사배열 등에서 사용이 가능한 반복문이다.
Object.keys() : 객체의 키를 요소로 하는 배열을 만들어 준다.Object.values() : 객체의 값을 요소로 하는 배열을 만들어 준다.Object.entries() : 객체의 키와 값의 쌍을 요소로 하는 이중배열을 만들어 준다.function removeArrayValues(obj) {
for (let key in obj) {
if (Array.isArray(obj[key])) {
delete obj[key];
}
}
}
if (el in obj) // el이라는 key가 obj에 있는지 불리언 타입으로 내준다.
function countAllCharacters(str) {
let obj = {};
let arr = str.split('');
for (let el of arr) {
if (obj[el] === undefined) {
obj[el] = 0
}
obj[el]++;
// 처음에 obj[el] = 0으로 시작을 하고 1을 더한다. 만약에 이미 있는 키라면 undefined가 아니므로 초기화가 안 되고 1이 더해진다!
}
return obj;
}
obj[el]++ 라는 표기법도 배운 것 같다.str = str.split(" ").join(""); 이렇게 한 줄이면 간단하게 된다!function mostFrequentCharacter(str) {
let obj = { mostCount: 0, mostFrequent: '' };
for (let i = 0; i < str.length; i++) {
if (str[i] === ' ') {
continue;
}
if (obj[str[i]] === undefined) {
obj[str[i]] = 0;
}
obj[str[i]] += 1;
if (obj[str[i]] > obj['mostCount']) {
obj['mostCount'] = obj[str[i]];
obj['mostFrequent'] = str[i];
}
}
return obj['mostFrequent'];
}
20, 21