객체 기초 [R]

nada_1221·2022년 7월 8일
0

공부

목록 보기
6/49

객체의 값을 사용하는 방법 2가지

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'

Dot vs Bracket

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

객체는 데이터에 의미를 부여할 수 있다.

*객체도 참조형 타입

반복문 for~in

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;
}
profile
FE_개발자_지망생

0개의 댓글