수를 받아 각 요소를 두 배로 곱한 수를 배열로 리턴
function getDoubledElements(arr) {
return arr.map(function(el){
return el * 2
})
}
.map 이용해서 함수를 돌면서 각 요소를 곱하기 2해준후 출력해준다
문자열 -> 각 요소의 길이를 요소로 같은 배열 리턴
function getLengthOfElements(arr) {
return arr.map(obj => obj.length)
}
페어분 께서 화살표 함수 사용하는 법을 알려주셨따..ㅠ_ㅠ
오늘도 안전벨트매고 버스 열심히 탄다
요소가 짝수일 경우 ok, 홀수일 경우 no 출력
function checkEvenOrNot(arr) {
return arr.map (function(el){
if (el === 0) {
return 'no'
}
if (el % 2 === 0) {
return 'ok'
} else {
return 'no'
}
})
}
내가 쓴 코드.. 처음에 0 의 값일 때가 통과를 못해서 따로 요소가 0일 때는 no를 출력하라고 지정해주었다
function checkEvenOrNot(arr) {
return arr.map(function (el) {
if (el === 0 || el % 2) {
return 'no';
} else {
return 'ok';
}
});
}
처음부터 요소가 0이고, 또 요소를 2로나눈 나머지의 값이 존재할 경우를 no로 출력하라고 먼저 주었음.
훨씬 코드가 간결해졌당
function checkEvenOrNot(arr) {
return arr.map(el =>
(el === 0 || el % 2) ? 'no' : 'ok')
}
코드를 더더 간단하게 적어보기
객체를 입력받아 키가 name인 요소를 배열로 나열
function getOnlyNames(arr) {
return arr.map(obj => obj.name)
}
function getFullNames(arr) {
return arr.map(obj =>
`${obj.firstName} ${obj.lastName}`)
}
function square(number) {
return number * number;
}
function getSquaredElementsAtProperty(obj, property) {
let result = obj[property];
if (Array.isArray(result)){
return result.map(el => square(el))
} else {
return []
}
}
function square(number) {
return number * number;
}
function getSquaredElementsAtProperty(obj, property) {
let result = obj[property];
return Array.isArray(result) ? result.map(el => square(el)) : []
}
객체에서 나이가 18세 이상인 사람의 이름을 배열로
const filtered18 = function (age){
if (age >= 18) {
return true
}
return false
}
function getOnlyAllowedToDrink(arr) {
let result = arr.filter(function(obj){
return filtered18(obj.age)
}) // 소괄호 뒤에 return이나 . 등을 붙이면 연결해서 실행이 되기 때문에 엔터를 쳐주어야 함.
return result.map(function(obj){
return obj.name
})
}
처음에 적었던 코드는 이거였다
function getOnlyAllowedToDrink(arr) {
let filteredList = arr.filter (function(info){
return info.age >= 18
})
return filteredList.map(info => info.name)
}
두 번쨰로 적었던 코드. 처음에는 함수를 지정한 변수값에 일일이 true와 false를 달아주고 아예 밖으로 빼내었음.
근데 그냥 처음 함수 내에서 filter를 이용해서 18세 이상인 정보들만 빼낸 목록을 만들어주고,
그 다음으로 map 을 이용해 name 값을 출력했다.
연도 등을 갖는 객체를 입력받아 해당 연도 보다 이전에 개봉한 영화를 배열로 나열 (영화 제목 by 영화 감독)
function classicMovies(arr, year) {
let movies = arr.filter (function(movieYear){
return movieYear.year < year
})
return movies.map(movieYear => `${movieYear.title} by ${movieYear.director}`)
}
이거 변수 만드는 과정에서 조금 헷갈렸는데.. 어찌저찌 했다. 변수명을 개떡같이 ㅠ 해가지고
숫자인 배열의 모든 합
function computeSumOfAllElements(arr) {
if (arr.length === 0) return 0
return arr.reduce((num1, num2) => num1 + num2)
}
.reduce를 이용한다
숫자인 배열을 모두 곱함
function computeProductOfAllElements(arr) {
return arr.reduce((acc, cur) => acc * cur ,1)
}