행위를 반복하게 한다.
for(초기값 설정, 조건, 초기값의 변화)
for(let i=0; i<=10; i++){
}
for(let i=0; i<=10; i+=1){
}
{key:value}로 이루어진 객체 오브젝트는 반복 가능한 객체로 인식되지 않는다.
객체는 맞지만 반복 가능한 객체는 아니다.
const testScores={
keenan:80,
damon:67,
kim:53,
lee:23,
ko:24,
he:50,
hu:60,
}
//객체 오브젝트에 for..of문으로 loof를 돌릴라고 하면
//TypeError: testScores is not iterable 에러 발생
for(let person of testScores){
console.log(person)
}
//오브젝트를 loof하기 위한 방법 1
//for...in을 사용
fot(let 오브젝트의 키값 in for문 돌릴 오브젝트){
}
for(let person in testScores){
// 이렇게 접근 못 함
console.log(testScores.person) //why key값이 person이라는 변수에 담겨져 있기 때문
console.log(testScores[person]) // key값에 맞는 value값이 찍힘
console.log(person) // key값들이 나옴
}
//오브젝트를 loof하기 위한 방법 1
Object.keys(키값을 얻을 오브젝트)
//메소드를 실행시키면 오브젝트의 키값들을 배열에 담아서 리턴함
console.log(Object.keys(testScores)); // ["keenan", "damon", "kim", "lee", "ko", "he", "hu"]
//Object를 사용하면 value값을 바로 얻을 수 있음.
Object.value(밸류값을 얻을 오브젝트)
//메소드를 실행시키면 벨류값들을 배열에 담아서 리턴
console.log(Object.values(testScores)); //[80, 67, 53, 23, 24, 50, 60];
//Object를 사용해서 key:value 전체를 얻을 수도 있ㄴ음
Object.entires(값을 얻을 오브젝트);
console.log(Object.entries(testScores));
[
["keenan", 80],
["damon", 67],
["kim", 53],
["lee", 23],
["ko", 24],
["he", 50],
["hu", 60],
];
let a = Object.entries(testScores);
console.log(a[0]) //프로터티에 접근 // [ 'keenan', 80 ]
console.log(a[0][0]) //키값에 접근 // 'keenan'
console.log(a[0][1]) //벨류값에 접근 // 80
//객체는 배열이나 문자열처럼 길이를 구할 수 없음 그래서 위에 Object로 키나 벨류를 배열에 담아서
//길이를 구할 수 있음 Object로 key나 value를 가져오면 for...in이 아니라 for..of를 써줌
//for of 함수에 넣어서 평균을 구함
let averageScore = 0;
for(let score of Object.values(testScores)){
averageScore += score;
}
averageScore = averageScore/Object.values(testScores).length;
console.log(averageScore) // 51
//조건에 맞는 프로퍼티 삭제
const obj3 = {
a: 2,
b: 'remaining',
c: 4,
};
function removeNumberValues(obj) {
// TODO: 여기에 코드를 작성합니다.
//조건에 맞는 프로퍼티 지우기
for(score in obj){
console.log(obj[score]) // 밸류값
console.log(typeof obj[score]) // 밸류의 type
if(typeof obj[score] === 'number'){
//프로퍼티를 지울 때 밸류값으로 접근하여 삭제
delete obj[score];
}
}
}
removeNumberValues(obj3);
console.log(obj3); // 조건에 맞지 않은 프로퍼티만 남음