오브젝트(연관되어있는 특징과 행동들을 묶어 놓는것)
자료구조(비슷한 타입들을 묶어 놓는 것을 자료구조라 한다. 동일한 타입만 담을 수 있다는 차이점이 있다.)
방법 1
const arr1=new Array();
방법 2
const arr2=[1,2]
JavaScript
const fruits=['사과','바나나','체리','수박']
console.log(fruits); // 콘솔로 보면 프로토타입 어레이 , 프로토타입 오브젝트가 있다.
console.log(fruits.length); // 4개 (사과, 바나나, 체리, 수박)
console.log(fruits[0]);//사과
console.log(fruits[1]);//바나나
console.log(fruits[2]);//undefined
console.log(fruits[fruits.length-1]);//마지막은 뭐니? 바나나
for문
JavaScript
const fruits=['사과','바나나','체리','수박']
for(let i=0; i<fruits.length; i++){
console.log(fruits[i])
}
fruits 의 length 만큼 i는 1씩 증가하고 콘솔에 0번~3번째 까지 콘솔에 보이게 하기
for each문
JavaScript
const fruits=['사과','바나나','체리','수박']
fruits.forEach(function(fruit, index, array){
console.log(fruit, index, array);
});
for of문
JavaScript
const fruits=['사과','바나나','체리','수박']
for(let fruit of fruits){
console.log(fruits);
}
JavaScript
const fruits=['사과','바나나','체리','수박']
fruits.push('apple','banana');
console.log(fruits);
뒤에서 부터 추가하고 push를 쓴다.
JavaScript
fruits.pop();
console.log(fruits);
banana가 지워진걸 확인할 수 있다.
JavaScript
fruits.unshift('딸기','레몬'); //앞에 item을 추가
console.log(fruits);
앞쪽에 딸기, 레몬이 추가 되었다.
JavaScript
fruits.shift();
console.log(fruits);
맨 앞 '딸기'가 지워졌다.
*뒤에 있는 데이터는 빈곳에서 넣었다 뺐다 하기 속도가 빠르지만 앞에서 추가하고 삭제하는 것은 기존에 있는 데이터들의 순서를 바꾸고 추가 삭제해야 하기 때문에 느려진다.
JavaScript
fruits.push('오렌지','망고','귤');
console.log(fruits);
fruits.splice(1,2);
console.log(fruits);
오렌지 망고 귤을 추가하였고 splice를 사용하여 1번에서 부터 2개를 지우게 했다. splice(1,2)
사과 와 바나나가 삭제 되었다.
JavaScript
fruits.splice(1,1, '딸기');
console.log(fruits);
1번 1개를 지우고 '딸기'를 추가한다.
JavaScript
const fruits2=['복숭아','참외'];
const newFruits=fruits.concat(fruits2); //뒤에 추가하는것
const newFruits=fruits2.concat(fruits);//앞에다가 합치는것
console.log(newFruits);
JavaScript
console.log(fruits);
console.log(fruits.indexOf('사과')); // indexOf는 몇번째 있는지 알려준다.
console.log(fruits.indexOf('복숭아')); //는 없기 때문에 -1 없음을 의미함 (없으면 -1의 값을 갖는다.)
console.log(fruits.includes('복숭아')); //false //갖고있으면 참 없으면 거짓
console.log(fruits.includes('귤')); //true //갖고있으면 참 없으면 거짓
JavaScript
console.clear();
fruits.push('사과','복숭아');
console.log(fruits);
console.log(fruits.lastIndexOf('사과'));
같은 글자가 있다면 lastIndexOf를 사용하면 뒤에서 부터 찾아준다.
JavaScript
{
const fruits=['apple','banana','orange']
const result=fruits.join('/')
console.log(result)
}
사이사이 '/'를 넣어 구분하고 싶을때 사용
JavaScript
{
const fruits='사과, 키위, 바나나, 체리';
const result=fruits.split(',',2); //'사과, 키위, 바나나, 체리' ','를 기점으로 2개를 보여달라는것
console.log(result);
}
JavaScript
{
const str='The quick brown fox jumps over the lazy dog';
const words=str.split(' ');
console.log(words[3]);//띄어쓰기를 기점으로 단어 하나하나 중 3번째에 있는 단어
const chars=str.split('');
console.log(chars[8]); //띄어쓰기와 함께 8번째에 있는 문자
}
JavaScript
{
const array=[1,2,3,4,5];
const result=array.reverse(); //array의 순서를 반대로 reverse
console.log(result);
console.log(array); //result와 array 둘다 바뀐다.
}
JavaScript
{
const array=[1,2,3,4,5];
const result=array.slice(2, 5) //2부터 시작해서 5전까지 두고 나머지 자름
console.log(result);
console.log(array); //array의 값은 변하지 않는다.
}
JavaScript
class student{
constructor(names, age, gender, enrolled, score){
this.names=names;
this.age=age;
this.gender=gender;
this.enrolled=enrolled;
this.score=score;
}
}
const students=[
new student('상팔', 33, '남성', true, 45),
new student('두식', 32, '남성', false, 80),
new student('성철', 35, '남성', true, 90),
new student('팔득', 38, '남성', false, 66),
new student('종득', 30, '남성', true, 88),
]
{
const result= students.find(function(student, index){
//console.log(student, index);
return student.score===90; //90점 찾기
//return student.enrolled===false; //false 찾기
});
console.log(result);
}
//방법1
{
const result=students.filter(function(student){
return student.enrolled===true
});
console.log(result);
}
//방법2 (권장)
{
const result=students.filter((student)=> student.enrolled);//한줄일때 중괄호 생략 가능
console.log(result);
}
JavaScript
{
const result=students.map((student)=> student.score);
console.log(result);
console.log(students)
}
JavaScript
{
const result=students.some((student)=> student.score < 50)
console.log(result); //student중 50점 미만인 사람이 있는지 찾는것 있기 때문 true
}
{
const result1=students.every((student)=> student.score < 95)
console.log(result1); //모두 충족해야 true , false 가 나옴
}
ex)01_전체선택자
HTML
<span>현재 보이는 모든 숫자의 글자색을 바꿔 주세요</span>
<div>
1
<div>
1-1
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li>2-1-1-1</li>
<li>2-1-1-2</li>
<li id="element">2-1-1-3</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li>2-2-3</li>
<li>2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
<script type="text/javascript">
$(function(){
$('*').css({color:'red'});
});
</script>
ex)02_아이디선택자
HTML
<span>'element'아이디를 선택하여 노랑색 배경과 3px 두께의 실선을 만들어 주세요</span>
<div>
1
<div>
1-1
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li>2-1-1-1</li>
<li>2-1-1-2</li>
<li id="element">2-1-1-3 (나를 바꿔 주세요)</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li>2-2-3</li>
<li>2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('#element').css({background:'yellow',border: "3px dashed red"});
});
ex)03_클래스선택자
HTML
<span>'elements'클래스를 선택하여 빨강색 배경과 글자색을 skyblue으로 만들어 주세요</span>
<div>
1
<div>
1-1
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li>2-1-1-1</li>
<li>2-1-1-2</li>
<li id="element">2-1-1-3</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li class="elements">2-2-3 (나를 바꿔 주세요)</li>
<li class="elements">2-2-4 (나를 바꿔 주세요)</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('.elements').css({background:'red',color:'skyblue'});
});
ex)04_요소선택자
HTML
<span>'h2'요소를 선택해서 배경색은 skyblue 투명도는 0.9로 만들어 주세요</span>
<div>
<h1>1</h1>
<div>
<h2>1-1 (나를 바꿔 주세요)</h2>
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li>2-1-1-1</li>
<li>2-1-1-2</li>
<li>2-1-1-3</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li class="elements">2-2-3</li>
<li class="elements">2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('h2').css({background:'skyblue',opacity:'.9' });
});
ex)05_그룹선택자
HTML
<span>'h1,h2,h3,h4'요소들을 선택해서 글자크기를 13px, border 색상은 빨간색으로 만들어 주세요</span>
<div>
<h1>1 (나를 바꿔 주세요)</h1>
<div>
<h2>1-1 (나를 바꿔 주세요)</h2>
</div>
</div>
<div>
2
<div>
<h3>2-1 (나를 바꿔 주세요)</h3>
<div>
2-1-1
<ul>
<li><h4>2-1-1-1 (나를 바꿔 주세요)</h4></li>
<li>2-1-1-2</li>
<li>2-1-1-3</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li>2-2-3</li>
<li>2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('h1,h2,h3,h4').css({fontSize:'13px' ,color:'red', border:"1px solid red"});
});
ex)06_인접관계선택자
HTML
<span>'h3요소의 클래스 tit'요소 다음 선택해서 글자크기를 글자색을 green색으로 만들어 주세요</span>
<div>
1
<div>
1-1
</div>
</div>
<div>
2
<div>
2-1
<div>
2-1-1
<ul>
<li class="tit"><h3 >2-1-1-1 </h3></li>
<li>2-1-1-2 (나를 바꿔 주세요)</li>
<li>2-1-1-3</li>
<li>2-1-1-4</li>
<li>2-1-1-5</li>
</ul>
</div>
</div>
<div>
2-2
<ul>
<li>2-2-1</li>
<li>2-2-2</li>
<li>2-2-3</li>
<li>2-2-4</li>
<li>2-2-5</li>
</ul>
</div>
</div>
JavaScript
$(function(){
$('.tit').next().css({color:'green'});
$('.tit+++li').next().css({color:'green'});
});
ex) 07인접관계선택자부모요소선택자
HTML
<span>parent() 메서드를 사용하여 id가 "childEl"인 엘리먼트의 부모 엘리먼트인 태그네임이 "ul"인 엘리먼트를 찾아 색을 바꿔 주세요.</span>
<div id="wrapper">
<ul>
<li>1</li>
<li>2</li>
<li>3
<ul id="parentEl">
<li>3-1</li>
<li>3-2</li>
<li id="childEl">3-3</li>
<li>3-4</li>
</ul>
</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
JavaScript
$(function(){
$('#childEl').parent('ul').css({color:'red'});
});
ex) 08_자식선택자
HTML
<span>children() 메소드를 사용하여 아래 엘리먼트들의 글자색을 변경해 주세요.</span>
<div id="wrapper">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
JavaScript
$(function(){
$('#wrapper ul').children().css({color:'red'});
});
ex) 09인접관계선택자형(이전)/동생(다음)요소선택자
HTML
<span>클래스 txt를 기준으로 prev()이전-배경색 노랑으로 next()다음-배경색 빨강으로 변경해주세요 </span>
<div id="wrapper">
<h2>커피믹스</h2>
<h4>이환천</h4>
<p>내목따고</p>
<p class="txt">속꺼내서</p>
<p>끊는물에</p>
<p>넣오라고</p>
<p>김부자이</p>
<p>시키드나</p>
</div>
JavaScript
$(function(){
$('.txt').prev().css('background','yellow');
$('.txt').next().css('background','red');
});
ex) 10인접관계선택자전체형(이전)/전체동생(다음)요소선택자
HTML
<span>클래스 txt를 기준으로 prevAll()전체이전-배경색 노랑으로 테두리 초록색, nextAll()전체다음-배경색 빨강으로 테두리 노랑 변경해주세요 </span>
<div id="wrapper">
<h2>짝사랑</h2>
<h4>이환천</h4>
<p>마주치는 니눈빛이</p>
<p class="txt">무엇들을 말하는지</p>
<p>걔느이미 알고 있다.</p>
<p>여자들다 여우라서</p>
<p>모르는척 하는거지</p>
<p>옆에있는 걔친구도</p>
<p>걔친구의 친구들도</p>
<p>니만빼고 전부다가</p>
<p>니사랑을 알고있다</p>
</div>
JavaScript
$(function(){
$('.txt').prevAll().css({background:'yellow',border:'3px solid green'});
$('.txt').nextAll().css({background:'red',border:'1px solid yellow'});
});
ex) 11인접관계선택자전체형제요소선택자
HTML
<span>클래스 txt를 기준으로 siblings()전체형제-배경색 빨강으로 margin-bottom:10px로 변경해주세요 </span>
<div id="wrapper">
<h2>소주</h2>
<h4>이환천</h4>
<p>초록색만 쳐다봐도</p>
<p>신물나고 속이쓰려</p>
<p>녹색병에 독극물을</p>
<p class="txt">두번다시 안마신다</p>
<p>내눈앞에 술이있고</p>
<p>안주들이 신비로워</p>
<p>딱한잔만 마셔보니</p>
<p>어제보다 목넘김이</p>
<p>부드럽고 깔끔해서</p>
<p>또한번더 속아본다.</p>
</div>
JavaScript
$(function(){
$('.txt').siblings().css({background:'red',marginBottom:'10px'});
});
ex) 12인접관계선택자범위 제한 전체 형/동생 요소선택자
HTML
<span>클래스 txt3를 기준으로 prevUntil()의 title - 배경 아쿠아색 보더 빨간색/ nextUntil()을 이용해서 text6전까지 아쿠아색 보더 빨간색으로 변경해주세요 </span>
<div id="wrapper">
<h2 class="title">난리</h2>
<h4>이환천</h4>
<p>내가진짜</p>
<p>마음먹고</p>
<p>살을빼면</p>
<p class="txt3">난리난다</p>
<p>내위장들</p>
<p>하루종일</p>
<p class="text6">밥달라고</p>
<p>난리난다</p>
</div>
JavaScript
$(function(){
$('.txt3').prevUntil('.title').css({background:'aqua',border:'1px solid red'});
$('.txt3').nextUntil('.text6').css({background:'aqua',border:'1px solid red'});
});
ex) 13인접관계선택자상위 요소선택자
HTML
<span>parents() 메서드를 사용하여 id가 "childEl"인 엘리먼트의 조상 엘리먼트중 id가 "parentEl"인 엘리먼트를 찾아 색을 바꿔 주세요.</span>
<div >
<ul>
<li>1</li>
<li class="parentEl">2</li>
<li>3
<ul>
<li>3-1</li>
<li>3-2</li>
<li class="parentEl">3-3
<ul>
<li>3-3-1</li>
<li>3-3-2</li>
<li id="childEl">3-3-3</li>
<li>3-3-4</li>
<li>3-3-5</li>
</ul>
</li>
<li>3-4</li>
</ul>
</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
JavaScript
$(function(){
$('#childEl').parents('.parentEl').css({background:'red'});
});
ex) 14인접관계선택자가장 가까운 상위 요소선택자
HTML
<span>closest() 메서드를 사용하여 id가 "childEl"인 엘리먼트의 가장 가까운 상위 엘리먼트를 찾아 border 5px 빨간색을 바꿔 주세요.</span>
<div>
<ul>
<li>1</li>
<li class="parentEl">2</li>
<li>3
<ul>
<li>3-1</li>
<li>3-2</li>
<li class="parentEl">3-3
<ul>
<li>3-3-1</li>
<li>3-3-2</li>
<li id="childEl">3-3-3</li>
<li>3-3-4</li>
<li>3-3-5</li>
</ul>
</li>
<li>3-4</li>
</ul>
</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
JavaScript
$(function(){
$('#childEl').closest('.parentEl').css('border','5px solid red');
});