1. Dot ( . ) notation
let user = {
firstName: 'blah',
lastName: 'blala',
email:'blablah@blablaa.com',
city: 'busan'
};
user.firstName;//'blah'
user.city;//'busan'
2.Bracket ( [ ] ) notation
let user = {
firstName: 'blah',
lastName: 'blala',
email:'blablah@blablaa.com',
city: 'busan'
};
user['firstName']//'blah'
user['city;']//'busan'
Bracket - key 값이 변수일 때,
Dot - 동적인 값일 때는 사용이 어려움
//ex1)
let person = {
name: 'nada', //<-- 변동 값
age: '333' // <-- 변동 값
};
let output = getProperty(person,'name');
console.log(output);//--> 'nada'
let output2 = gerProperty(person, 'age');
console.log(output2); // --> '333'
function getProperty(obj, propertyName){ //obj 와 pro~name 은 매개변수 매번 변함
return obj[pro~name];} //<- [변수 취급] 이기 때문에 변수가 봐뀌어도 해당 변수 값을 찾아줌
//ex2)
let tweet = {
writer : 'a',
createdAt: 'n-n-n n:n:n',
content: 'nn nnn'
};
tweet['content']=== twwet.content;// true
--> dot/bracket notation 을 이용해 값을 추가 할 수도 있다.
//ex3)
let tweet = {
writer : 'a',
createdAt: 'n-n-n n:n:n',
content: 'nn nnn'
};
tweet['category'] = '잡담';
tweet.isPublic = true;
tweet.tags = ['#n','#nn']
-->delete 키워드를 이용해 삭제가 가능
//ex4)
let tweet = {
writer : 'a',
createdAt: 'n-n-n n:n:n',
content: 'nn nnn'
};
// createAt 키-값 깡을 지웁니다.
delet tweet.createdAt;
//tweet 은 다음과 같게 된다.
// {writer : 'a',
// content: 'nn nnn'
// }
-->in 연산자를 이용해 해당하는 키가 있는지 확인할 수 있다.
let tweet = {
writer : 'a',
createdAt: 'n-n-n n:n:n',
content: 'nn nnn'
};
'content' in tweet; //true
'upadesAt' in tweet; //false
*객체도 참조형 타입
function test(obj){
//반복문 for~in
for(let prop in obj){
if(Array.isArray(obj[prop])){
delete obj[prop]
}
}
}
//객체를 입력받아 속성의 개수를 리턴해야 할 때
function test2(obj){
let count = 0;
for(let prop in obj){
count ++
}
return count;
}
=== return Object.keys(obj).length;
//15
function test3(arr, obj){
//입력값 : 배열 과 obj
//출력값 : 배열 요소와 obj의 키가 같은 애들만 나옴
//배열 과obj 의 요소가 같으면 새로운 객체에 그걸 담아서 리턴
let newObj = {}
//객체의 키와, 배열의 요소를 비교 -> 이중 반복문
//객체는 for in
//배열은 for of
for(let prop in obj){
for(let ele of arr){
if(prop === ele){
//같으면, 새로운 객체에 obj 의 프로퍼티를 추가
newObj[prop] = obj[prop]
}
}
}
return newObj;
}
//객체 합치기 19
function test4(obj1, obj2){
//이미 해당 키가 존재하면 그대로 두고, 없으면 추가
// obj1을 돌아야할까요 obj2를 돌아야 할까요?
for(let prop in obj2){
if (!obj1.hasownProperty(prop){//=== if(!(prop in obj1)){~}
obj1[prop] = obj2[prop2]
}
}
}
//20
function test5(str){
//입력 : 문자열 banana
//출력 : 객체를 리턴
//{str의 각 문자 : 나온 횟수}
let obj = {};
//str을 돌면서, 각 문자를 확인.
for (let i = 0; i < str.length; i++){
//첫번 째 반복 str[i] -> b
if(!obj[str[i]])[
obj[str[i]] = 0;
//{b:0}
obj[str[i]]++; // === obj[str[i]] = obj[str[i]] +1
]
}
return obj;
}
//21
function test6 (str){
let most = '';
let count = 0;
let obj = {};
for(let i = 0; i < str.length; i++){
if(str[i] === ' ';){
//공백은 무시 -> 건너 뛴다 -> continue
continue;
}
if(!obj[str[i]]{
obj[str[i]]=0;
}
obj[str[i]]++;
// mostLetter -> a
// count -> 2
// 만약에, 방금 ++한게, count보다 커지면
// mostLetter랑 count 둘다 교체
if (obj[str[i]]>count){
count = obj[str[i]]
most = str[i]
}
}
return most;
}