const items = ['a','b','c','d','e']
for(let i = 0; i < 5; i++){
console.log(items[i]);
}
const items = ['a','b','c','d','e']
for(const i in items){
console.log(items[i]);
}
const items = ['a','b','c','d','e']
for(const i of items){
console.log(items[i]);
}
const items = ['a','b','c','d','e']
let i = 0;
while(i < items.length){
console.log(items[i]);
i++;
}
const items = ['a','b','c','d','e']
let i = 0;
do{
console.log(items[i]);
i++;
}while(i<items.length)
//arrow function
items.forEach((item, index) => {
console.log(item, index );
});// forEach는 인덱스 번호도 가져올 수 있다.
›
//function
items.forEach(function(item){
console.log(item);
});
/*
----forEach의 실행 과정----
const items = [1,2,3,4,5];
items.forEach(function(item){
console.log(item);
})
//items.forEach(function(item){...})
//.forEach(function(1)..)
//.forEach(function(2)..)
//.forEach(function(3)..)
//.forEach(function(4)..)
//.forEach(function(5)..)
//이런 식으로 하나씩 매개변수로 넣어줘서 함수를 실행한다.
*/
// 1. 배열을 변경하지 않고 정보만 가져오는 메소드
let a = ['hello', 'world', 'foo', 'bar'];
// find
console.log(
a.find(value => value.includes('f'))
);
// index로 아이템 조회
console.log(a[2]);
// index 찾기
console.log(a.indexOf('world'));
// 2. 원래 배열을 변경하는 메소드
a = ['hello', 'world', 'foo', 'bar'];
console.log(
a.push('elice')
); // returns a.length
console.log(
a.pop()
); // return popped item
const reversed = a.reverse();
console.log(reversed); // returns same array
console.log(a);
a.push('elice');
console.log(reversed);
a.sort();
console.log(a);
// 3. 새 배열을 반환하는 메소드
a = [1, 2, 3, 4, 5];
const b = a.map(v => v * 2);
console.log(a, b);
//[1,2,3,4,5] [2,4,6,8,10]
//원래 배열(a)은 유지하고 새로운 배열(b)을 만듬
const c = b.filter(v => v < 8);
console.log(a, b, c);
const items = [1,2,3, [4,5,6], [7,8], 9];
console.log('items', items);
console.log('flatted', items.flat());
const a = [1, 2, 3, 4, 5];
// 1. map
const b = a.map(v => v * 2);
console.log(b);
// [ 2, 4, 6, 8, 10 ]
// 2. reduce
const c = b.reduce((prev, curr) => prev + curr);
// 두개를 짝지어서 값을 보내줌 - 1과 2를 보내줌
// 배열의 요소가 [1,2,3,4,5]일때
// prev + curr
// 1 + 2 = 3
// 3, [3,4,5] => 3 + 3 = 6
// 6, [4,5] => 6 + 4 = 10
// 10, [5] => 10 + 5 = 15
console.log(c);
// 30
const d = b.reduce((sum, v) => sum + v, 0);
console.log(d);
// 30
const e = b.reduce(function(sum, v) {
return sum + v;
}, 0);
console.log(e);
// 30
/// =======================
const values = [...Array(11).keys()].slice(1);
// [1,2,3,4,5,6,7,8,9,10]
// 3. filter
console.log(
values.filter(value => value % 5 === 0)
);
// [ 5, 10 ]
console.log(
values.reduce((arr, v) => {
if (v % 5 === 0) {
arr.push(v);
}
return arr;
}, [])
);
// [ 5, 10 ]
// 4. every
console.log(
values.every(value => value % 2 === 0)
);
// false
console.log(
values.reduce((pass, v) => {
if (v % 2 !== 0) {
return false;
}
return pass;
}, true)
);
배열.map()
배열.filter()
배열.every()
배열.reduce()//reduce로 모두 구현할 수 있다.
function sum(a, b){
console.log('sum', a + b + this.offset);
}
sum(1,2);
sum.call({offset:30}, 1, 2);
const rect = {
w : 10,
h : 20,
calculate : function(){
this.w * this.h;
},
}
const test = function(){
this.a = 10;//이건 가능
//this = {a : 10};// 이건 쌉 불가능 => 이건 this를 바꾸는 것이니까 안되는데 위에건 this안에 있는 a에 값을 넣는 것이니까 쌉가능~~
console.log(this.a);
}
test.call({});
test.call('');
test.call('hello');
test.call({a : ture});
test.call(11);
//화살표함수에선 this를 함부로 못바꾼다.
//화살표함수는 this를 한번 선언하면 this를 바꿀 수 없다.
const another = () =>{
console.log(this);
};
another.call('hello'); //{}
another.call(true); //{}
function sum(...nums) {
console.log(nums);
return nums.reduce((a, b) => a + b, 0);
}
const add10 = sum.bind(null, 10);
const add20 = add10.bind(null, 20);
const add100 = add20.bind(null, 100);
console.log(add100.call(null, 3));
// ?
console.log(add100.apply(null, [3, 4, 5]));
console.log(add100.call(null, ...[3, 4, 5]));
function sum(...num){
console.log(nums);
return nums.reduce((a,b) => a+ b, 0);
}
console.log(
sum.call(null, 1,2,3,4)
);
function sum(...num){
console.log(nums);
return nums.reduce((a,b) => a+ b, 0);
}
console.log(
sum.apply(null, [1,2,3,4])
);
function sum(...nums) {
console.log(nums);
return nums.reduce((a, b) => a + b, 0);
}
const add10 = sum.bind(null, 10);
const add20 = add10.bind(null, 20);
const add100 = add20.bind(null, 100);
//sum(10,20,100)으로 묶어놓은 것
console.log(add100());
//console.log(add100.call(null, 3));
// ?
[...divs]
로 작성했다.- localStorage
DOM객체.addEventListener(이벤트명, 실행할 함수명, 옵션)
//DOM객체 불러오기
// 1번 방법
const player1 = document.getElementById("player1");
const player2 = document.getElementById("player2");
const player3 = document.getElementById("player3");
// 2번 방법
// const players = [];
// for(let i = 0; i < 3; i++){
// const player[i] = document.getElementById("player" + i+1);
//}
player1.addEventListener("click", updatePlayer1Name);
player2.addEventListener("click", updatePlayer2Name);
player3.addEventListener("click", updatePlayer3Name);
function updatePlayer1Name(){
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
player1.textContent = player1.id + ":" + name;
}
function updatePlayer2Name(){
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
player2.textContent = player2.id + ":" + name;
}
function updatePlayer3Name(){
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
player3.textContent = player3.id + ":" + name;
}
// 2번 방법
const players = [];
for(let i = 0; i < 3; i++){
players[i] = document.getElementById("player" + i+1);
players[i].addEventListener("click", function() {
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
players[i].textContent = playes[i]1.id + ":" + name;
});
}
// 3번 방법
const players = [];
for(let i = 0; i < 3; i++){
players[i] = document.getElementById("player" + (i+1));
players[i].addEventListener("click", updateName);
}
function updateName(event){
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
event.target.textContent = event.target.id + ":" + name;
}
// 4번 방법
for (let i = 0; i < 3; i++){
const players = document.getElementById("player" + (i+1));
players.addEventListener("click", updateName);
}
function updateName(event){
const name = prompt("Enter a new name");
//prompt = 이름을 적는 창
event.target.textContent = event.target.id + ":" + name;
}
DOM객체들을 불러올때 Elements를 사용하는 것들은 복수이기 때문에 첫번째 요소를 불러와야해서 document.getElementsByClassName[0]
를 붙여준다...(이거 떄문에 실행 안됐네 ㅂㄷㅂㄷ)
innerTEXT - text, 사용자가 볼 수 있는 문자열
textContent - text, 해당 객체에 있는 모든 문자열
innerHTML - element, <a>blahblah</a>
를 다 가져옴