//ES5
function() {}
//ES6
() => {}
//ES5
function getName() {}
//ES6
const getName = () => {}
//ES5
//Function Declaration
function getName() {}
//ES5
//Function Expression
const getName = function() {}
//ES5
const getName = function(name) {}
//ES6
const getName = (name) => {}
const getName = name => {}
//ES5
const getName = function(name, age) {}
//ES6
const getName = (name, age) => {}
//ES5
function getName(name) {
return name;
}
//ES6
const hi = name => { return name };
const hi = name => name;
//ES5
function getFullName(first, family) {
return first + family;
}
//ES6
const hi = (first, family) => { return first + family };
const hi = (first, family) => first + family;
const name = `김개발`;
const name = '김개발';
const hi = `안녕하세요. 저는 ${name} 입니다.`;
let detail = '자세히
보아야
이쁘다';
let detail = '자세히\n'+'보아야\n'+'이쁘다';
let detail = `자세히
보아야
이쁘다
내코드..`;
console.log(detail);
startWith endsWith includes
const email = 'yealee.kim87@gmail.com';
console.log(email.startsWith('ye')); // true
console.log(email.endsWith('com')); // ture
console.log(email.includes('@gmail')); // true
'#'.repeat(3); // ###
const arr = [1, 2, 3];
const squares = arr.map(x => x * x);
const squares = arr.map(function (x) {
return x * x; // [1, 4, 9]
});
let startWithNames = [];
let names = ['a', 'ab', 'cbb', 'ada'];
names.forEach(el => {
if (el.startsWith('a')) {
startWithNames.push(el);
}
}); // ststartWithNames = ["a", "ab", "ada"]
let hasC = false;
let arr = ['a', 'b', 'c', 'd'];
arr.forEach(el => {
if (el === 'c') {
hasC = true;
return;
}
});
let idxOfC = -1;
let arr = ['a', 'b', 'c', 'd'];
arr.forEach((el, idx) => {
if (el === 'c') {
idxOfC = idx;
return;
}
moreThan100 함수에 숫자로 구성된 배열을 인자로 넘겨
100 보다 크거나 같으면, true를
100 보다 작으면 false로 요소를 변경하여
새로운 배열을 return해주세요.
ex)
nums(input) => [100, 9, 30, 7]
return => [true, false, false, false]
const moreThan100 = nums => {
let arr = nums.map(
i => { if (i < 100) {
return false;
}
return true;
}
)
return arr;
}
moreThan100([100, 9, 30, 7]);
formatDate 함수에 날짜가 담긴 배열을 전달
날짜의 data type은 string이며,
보내는 날짜 타입은 'YYYY-MM-DD' 입니다.
해당 날짜의 형식을 'YYYY년 MM월 DD일' 로 바꿔서
새로운 배열을 return 해주세요.
ex)
dates(input) => ['2019-03-21', '2019-04-21', '2019-05-21']
return => ['2019년 03월 21일', '2019년 04월 21일', '2019년 05월 21일']
const formatDate = dates => {
let str = dates.map(function(arr){
let date = arr.split('-');
console.log(`${date[0]}년 ${date[1]}월 ${date[2]}일` )
return `${date[0]}년 ${date[1]}월 ${date[2]}일`;
}
)
return str;
}
formatDate(['2019-03-21', '2019-04-21', '2019-05-21']);
information 이라는 개체를 만듦
const information = { name: '김개발' }
여기에 키를 생성, 그 키에 값을 할당하려고 한다.
키와 값을 변수를 통해 받아온다면?
const verb = 'developes'; const project = 'facebook';
verb의 값을 키로 사용해야 하고, project의 값을 그 키의 값으로 사용한다고 했을때,
information[verb] = project // [A] information.developes = 'facebook' // [B]
📌 변수 verb와 project가 가지는 값에 따라 다른 키와 다른 값을 갖는게 가능
객체에 있는 모든 키에 한번씩 접근해야 한다면?
- 객체도 배열처럼 순회가 가능
- 배열과 다르게 정해진 순서가 없기 때문에, 어떤 순서에 따라 접근하게 될지 알 수 없다.
- 그렇기 때문에 객체의 순회는 순서가 보장되지 않은 순회라고 한다.
const arr = ['coconut', 'banana', 'pepper', 'coriander']
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
const keys = Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
for (let i = 0; i < keys.length; i++) {
const key = keys[i] // 각각의 키
const value = obj[key] // 각각의 키에 해당하는 각각의 값
console.log(value)
}
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]
const entries = Object.entries(obj)
/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/
📌 객체 순회 외에도, 일반적인 배열을 순회할때도 유용하게 사용된다.
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
for (let key in obj) {
const value = obj[key];
console.log(key);
console.log(value);
}
getExamResult 함수를 구현해주세요.
인자 scores 는 다음과 같은 객체입니다.
객체의 요소의 갯수 및 키의 이름들은 달라질 수 있습니다.
객체의 값은 다음 9가지 문자열 중에서 하나를 가지고 있습니다. ('A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F')
scores는 객체
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+'
}
requiredClasses는 문자열로 된 배열
['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']
1. scores 객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다.
단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다.
A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
2. requiredClass 배열의 요소로는 존재하지만, scores의 키로는 존재하지 않는 항목이 있다면,
해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다.
위에서 예시로 묘사된 객체와 배열이 인자로 들어왔다면,
다음과 같은 객체과 리턴됩니다. (요소간 순서는 다를수 있지만, 채점에 무관합니다.)
ex) {
'생활속의회계': 2,
'논리적글쓰기': 3,
'독일문화의이해': 3.5,
'기초수학': 1.5,
'영어회화': 2.5,
'인지발달심리학': 4.5,
'공학수학': 0,
'컴퓨터과학개론': 0,
}
const getExamResult = (scores, requiredClasses) => {
const result = {};
let obj = {
'A+': 4.5,
'A': 4,
'B+': 3.5,
'B': 3,
'C+': 2.5,
'C': 2,
'D+': 1.5,
'D': 1,
'F': 0
};
for (let i=0; i < requiredClasses.length; i++) {
let key = requiredClasses[i];
result[key] = 0;
}
for (let j in scores) {
let grade = scores[j];
result[j] = obj[grade];
}
return result;
}
이 문제도 엄청 오래 풀었던 문제 😩
result = {
'영어회화': 0,
'기초수학': 0,
'공학수학': 0,
'컴퓨터과학개론': 0
}
처음에 문제를 풀 때 결과의 객체 처럼 key를 넣고 나서 value를 영문 학점으로 할당하고 그 할당 한 값을 obj객체를 또 for문을 돌면서 같은지 비교해야 된다고 생각했다. 불필요한 단계를 넣어 생각해서 더 복잡했던 것 같다.
객체[key] = 값; 으로 객체에 키를 생성하고 값을 할당할 수 있고,객체[key]로 값을 바로 바로 찾을 수 있다는 개념이 부족해서 시간이 많이 걸린 것 같다.