객체

KoEunseo·2022년 7월 8일
0

javascript

목록 보기
6/32

배열은 순서에 대한 정보(인덱스)를 가지고 있는 참조형 데이터타입.

객체는 데이터에 의미를 부여함.(참조형 타입)

dot notation

키가 확정적일 때만 사용

bracket notation

키가 유동적일 때 사용

1. 매개변수를 받을때
obj[property]
2. property: value 값을 넣을 때
obj[property] = value

Object.keys(obj)

키값들만 모아 배열을 반환함

for in(객체 순환)

반복문.
객체는 for in : key를 비교. array사용못함!

for of(배열 값 순환)

배열, 객체 등 반복가능한 객체에 모두 사용 가능(array, map, set, string..)

07

인덱스가 아닌 키를 이용해 비교해야 하기 때문에 반복문을 쓰기 까다롭다.

obj[prop] 값 조회
객체에서 반복문 for in 활용
for(let prop in obj){
 if(Array.isArray(obj[prop])){
 delete obj[prop]
 }
}

12

let count = 0;
for(let prop in obj){
 count++;
}
return count;

다른방법
return Object.keys(obj).length;

15

//입력값 : ['a','b','c'], { a: 1, b: 2, c: 3, d: 4 };
//출력값 : { a: 1, c: 3 }
//obj의 키와 arr의 요소가 같으면 새로운 객체에 그걸 담아서 리턴
let newobj = {};
//객체의 키와 arr의 요소를 비교
//객체는 for in : key를 비교
//배열은 for of
for(let prop in obj){
 for(let ele of arr){
  if(prop === ele) {
   newobj[prop] = obj[prop];
  }
 }
}

17

//입력: [배열안에{객체},{객체}]

let user = [
 {
  id: 1,
  user_name: '객체',
  level: 19;
 },
 {
  id: 2,
  user_name: '배열',
  level: 25;
 },
 ...
]

if(!arr.length){
 return 'no name';
}
if(num > arr.length -1){
 return arr[arr.length -1]['name'];
}
return arr[num]['name'];

19

객체 합치기
이미 해당 키가 존재하면 그대로 두고 없으면 추가
obj1을 돌아야 할까 obj2를 돌아야 할까? 2를 돌고 1에서 확인한다.
1. 객체가 {a: undefined}일때 사용할수x
for(let prop in obj2){
 if(obj[prop] === undefined){
  obj1[prop] = obj2[prop];
 }
}

2. 
for(let prop in obj2){
 if(!obj1.hasOwnProperty(prop)){ //없을때
  obj1[prop] = obj2[prop];
 }
}

3. for in
for(let prop in obj2){
 if(!(prop in obj1)){ //없을때
  obj1[prop] = obj2[prop];
 }
}

20

//문자열 입력 'banana'
//객체를 리턴 {b: 1, a: 3, n: 2}
//{str의 각 문자: 나온 횟수}
let obj = {};
//str을 돌면서 각 문자를 확인.
for(let i = 0; i < str.length; i++){
 //첫번째반복 str[i] -> b
 //두번째반복 str[i] -> a
 //b를 키로 넣어준다.
 if(!obj[str[i]]){
 obj[str[i]] = 0; //{b: 0, a: 0}
 }
 obj[str[i]]++; //{b: 1 a: 1}
}

21

가장 많이 반복되는 문자
제일 큰거, 긴거 -> str[0]이 제일 크다고 가정하고 비교함
{b: 1, a: 3, n: 2} -> 3이 나와야 함

let mostLetter = '';
let count = 0;
let obj = {};

for(let i = 0; i < str.length; i++){
//공백은 건너뛴다 -> continue
 if(str[i] === ' '){
  continue;
 }
 if(!obj[str[i]]){
  obj{str[i]] = 0;
 }
 obj[str[i]]++; //{b: 1, a: 3, n: 2}
 //첫번째 반복에서 b가 obj에 들어가면,
 //mostLetter -> a
 //count -> 2
 //만약에 방금 ++한게 count보다 크면
 //mostLetter랑 count 둘다 교체
 if(obj[str[i]] > count){
  count = obj[str[i]];
  mostLetter = str[i];
 }
}
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글