위 예제를 보자면,
• plan1, plan2, plan3 라는 object가 있다.
• 각 object는 name, price, space, transfer, pages 라는 5개의 property가 있다.
• name 이라는 property의 데이터값은 String형이고, 나머지 4개의 property는 Number이다.
이렇게 object를 사용한 데이터는 아래와 같이 alert 메시지를 바꿀 수 있습니다.
alert(plan2.name + "플랜 가격은 한 달에 " + plan2.price + "달러입니다.")
`plan2.name` 은 "Professional"이고, `plan2.price` 는 5.99입니다.
•객체는 {}(중괄호)로 감싸져 있고,
•콜론으로 구분된 이름 / 값의 쌍들이, 쉼표로 분리된 목록의 형태입니다.
다시 말하면 객체는 이름과 값으로 구성된 프로퍼티들의 집합이라고 할 수 있다.
plan1
의 객체를 만들면 아래와 같다.
let plan1 = { name: "Basic", price: 3.99, space: 100, transfer: 1000, pages: 10 };
• property 이름은 중복될 수 없다.
• property이름과 property값 사이에 : (콜론)으로 구분한다.
• property를 추가할 때는 , (쉼표)를 붙여준다.
• property 값에는 어느 type이나 가능하다(string, number, array, object, function..)
⭐property
값에 접근하는 방법(점표기법,대괄호표기법)
• 마침표(.) 연산자를 사용하며, 접근하려는 객체명은 왼쪽에, 프로퍼티 명은 오른쪽에 위치합니다.
• 대괄호([])를 사용하여, 접근하려는 객체명은 왼쪽에, 프로퍼티 명은 쌍따옴표("")와 함께 대괄호 안에 작성합니다.
let plan1 = { name: "Basic" }; console.log(plan1.name); console.log(plan1["name"]);
❓마침표(.
)로 접근하는 것이 편한데 대괄호 표현은 언제 쓰는것이 좋을까? 예를 들어 plan1
객체의 name
이라는 프로퍼티에 접근하고 싶을 때 아래와 같이도 할 수 있다.
let plan1 = { name: "Basic" }; let propertyName = "name"; // 프로퍼티네임 수정 console.log(plan1[propertyName]);
📌아래의 코드에서 어떻게 객체의 프로퍼티에 접근했는지 확인해보자
let myObj = { property1: "hello", property2: [1,2,3,4,5], property3: { childproperty: "haha" } }; let name = "property"; console.log(myObj[name+"1"]); console.log(myObj[name+"2"]); console.log(myObj[name+"3"]); console.log(myObj[name+"3"]["child"+name]); console.log(myObj.property1); console.log(myObj.property2); console.log(myObj.property3); console.log(myObj.property3.childproperty); //위 아래 동일한 내용 출력
let myObj = { property1: "hello", property2: [1,2,3,4,5], property3: { childproperty: "haha" } }; let name = "property1"; myObj[name] = ["hi", "hello"]; // property1 부분 수정된 채로 출력 console.log(myObj);
let myObj = { property1: "hello", property2: [1,2,3,4,5], property3: { childproperty: "haha" } }; let name = "property1"; myObj[name] = ["hi", "hello"]; console.log(myObj); myObj.property3.siblingproperty = [3, 6, 9]; // property3에 siblingproperty 추가 console.log(myObj);
let objData = { name: 50, address: { email: "gaebal@gmail.com", home: "위워크 선릉2호점" }, books: { year: [2019, 2018, 2006], info: [{ name: "JS Guide", price: 9000 }, { name: "HTML Guide", price: 19000, author: "Kim, gae bal" }] } };
"HTML Guide"에 접근해보자
let bookname = objectData.books.info[1].name; console.log(booksname);
getData 함수를 구현해주세요!
getData 함수는 세 개의 배열을 인자로 받습니다.•salesArr : 날짜별 판매량
ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]
•reviewArr : 날짜별 리뷰수
ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]
•likeArr : 날짜별 좋아요수
ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]
다음 요구사항을 충족하는 객체를 만들어서 return 해주세요.리턴되는 객체는 아래와 같이 3개의 property를 가집니다.
•sumAmount : 총 판매량
•sumReview : 총 리뷰개수
•sumLike : 총 좋아요수
function getData(salesArr, reviewArr, likeArr) { let objData = {}; // 일단 세가지 파라미터를 담을 빈 객체를 만듦 let salesSum = 0; // 세가지 변수를 선언함. let reviewSum = 0; let likeSum = 0; //배열의 요소를 도는 for문을 만듦 for(let i = 0; i < salesArr.length; i++) { salesSum = salesSum + salesArr[i][1]; } for(let i = 0; i < reviewArr.length; i++) { reviewSum = reviewSum + reviewArr[i][1]; } for(let i = 0; i < likeArr.length; i++) { likeSum = likeSum + likeArr[i][1]; } objData.sumAmount = salesSum; objData.sumReview = reviewSum; objData.sumLike = likeSum; //세가지 프로퍼티에 접근하는 방식을 작성. return objData; // 변수들을 담은 객체를 리턴함 }