내일배움캠프 7일차 TIL(2) - 객체와 배열

Sunny·2023년 12월 30일
0

객체

객체 생성 방법

let myDog = {
    name : "해피",
    age : "1"
}

생성자 함수

function Dog(name, age) {
    this.name = name;
    this.age = age;
}
let myDog = new Dog("해피", 1);
let yourDog = new Dog("까미", 1);

접근법

객체.키

myDog.name //해피

메서드

.keys

let keys = Object.keys(myDog) //['name', 'age']

.values

let values = Object.values(myDog) //['해피', 1]

.entries

let entries = Object.entries(myDog) //[['name','해피'],['age',1]]

.assign

let newDog = {}
Object.assign(newDog, myDog, {name: "까미"})

비교

//객체는 안의 값이 동일해도 다른 개체 (== 써도 마찬가지)
console.log(yourDog === newDog) //false
//문자열화시키면 값만 비교 가능
console.log(JSON.stringify(yourDog) === JSON.stringify(newDog)) //true

병합
... : spread operator

let name = { name: '해피' }
let age = { age: 1 }
let perfectDog = {...name, ...age}
console.log(JSON.stringify(myDog) === JSON.stringify(perfectDog)) //true 

배열

생성

//기본 생성
let fruits = ['apple', 'grape', 'orange']
//크기만 지정
let vegetables = new Array(3)

접근법

fruits[0] //apple

메서드

마지막 요소 추가/삭제

fruits.push('banana')
fruits.pop()

첫 요소 추가/삭제

fruits.unshift('banana')
fruits.shift()

지정 삭제 및 대체

fruits.splice(1, 1, 'banana') //index 1번부터 1번까지 삭제 후 'banana' 삽입
console.log(fruits) //['apple', 'banana', 'orange']

잘라서 저장

let slicedFruits = fruits.slice(1, 2) //index 1번부터 2번 전까지(1번만)
console.log(slicedFruits) //['banana']
console.log(fruits) //['apple', 'banana', 'orange'] 원본은 그대로

foreach

//콜백함수: 매개변수 자리에 함수를 넣는 것
//배열 안의 모든 item에 대해 로직을 수행
fruits.foreach(function(item){
	console.log("I like",item)
})

map

//가공을 통해 새로운 배열을 생산
let freshFruits = fruits.map(function(item){
	return "fresh " + item
})
console.log(freshFruits)
//[ 'fresh apple', 'fresh banana', 'fresh orange' ]
//원본 배열 길이만큼의 return이 있음(return이 없어도 length가 같은 빈 배열 생성)

filter

//return 뒤 조건에 맞는 값만 모아 배열로 반환
let redFruits = fruits.filter(function(item){
	return item == 'apple'
})
console.log(redFruits) //['apple']

find

//조건에 맞는 첫번째 값을 반환
let longFruit = fruits.find(function(item){
    return item.length > 5;
}) 
console.log(longFruit) //banana (배열 형태가 아님)

0개의 댓글