let names = [
"Steven Paul Jobs",
"Bill Gates",
"Mark Elliot Zuckerberg",
"Elon Musk",
"Jeff Bezos",
"Warren Edward Buffett",
"Larry Page",
"Larry Ellison",
"Tim Cook",
"Lloyd Blankfein",
];
-> 공통적으로 사용되는 배열
1. map 문제
- 모든 이름을 대문자로 바꾸어서 출력 하세요 (예-[“Steven”,“Bill”,“Mark”,“Elon”…])
names.map((item)=>{
return console.log(item.toUpperCase())
// .toUpperCase() : 소문자 -> 대문자로 변환
// .toLowerCase() : 대문자 -> 소문자로 변환
})
or
let data = names.map((item)=>{
return item.toUpperCase()
// .toUpperCase() : 소문자 -> 대문자로 변환
// .toLowerCase() : 대문자 -> 소문자로 변환
})
console.log(data)
: map() 함수는 반환값이 존재하기 때문에 return 키워드를 사용 하였고 반환값을 담을 변수를 선언 해주었다.
- 성을 제외한 이름만 출력 하세요 (예-[“SPU”,“BG”,“MEZ”,“EM”…])
let data = names.map((item)=>{
return item.split(" ")[0]
// split() 함수를 사용해서 특정 조건에 맞춰 item을 잘라주고
// split() 함수의 반환값은 배열로 나오기 때문에
// 출력 하고자 하는 인덱스 값을 설정하였다.
})
console.log(data)
- 이름의 이니셜만 출력 하세요
let data = names.map((item)=>{
let splitName = item.split(" ")
let initial = ''
// 이니셜을 담을 변수
splitName.forEach((nameItem)=>{
// splitName이라는 배열을 forEach 함수를 사용해서 반복문을 돌린다.
initial += nameItem[0]
// nameItem의 첫번째 글자를 initial에 담는다.
})
return initial
})
console.log(data)
2. filter 문제
- 이름에 a를 포함한 사람들을 출력 하세요
let data = names.filter((item)=>{
return item.includes("a")
// includes() 함수는 문자열이 특정 문자열을 포함하고 있는 지 확인하는 메소드입니다.
})
console.log(data)
- 이름에 같은 글자가 연속해서 들어간 사람을 출력 하세요 (예-tt,ff,ll 이런 글자들)
let data = names.filter((item)=>{
let splitName = item.split("")
return splitName.some((letter, index) => letter == splitName[index+1])
// some() 함수를 사용해서 하나라도 참이면(연속된 글자가 있으면) true를 반환하여
// splitName을 return 한다.
})
console.log(data)
3. some 문제
- 전체 이름의 길이가 20자 이상인 사람이 있는가?
let data = names.some((item)=>{
let itemLength = item.length
return itemLength >= 20
})
console.log(data)
★★ 이해하지 못함 ★★
- 성을 제외한 이름에 p를 포함한 사람이 있는가? (대소문자 상관하지 않는다.)
console.log(names.some((item)=>{
let splitName = item.split(' ')
splitName.pop()
return splitName.some(eachName=>eachName.toLocaleLowerCase().includes("p"))
}))
4. every 문제
- 모두의 전체 이름의 길이가 20자 이상인가?
let data = names.every((item)=>{
return item.length >= 20
})
console.log(data)
- 모두의 이름에 a가 포함되어 있는가?
let data = names.every((item)=>{
let splitName = item.split()
return splitName.every((nameItem)=>{nameItem.includes('a')})
})
console.log(data)
5. find 문제
- 전체 이름의 길이가 20자 이상인 사람을 찾으세요
let data = names.find((item)=>{
return item.length >= 20
})
console.log(data)
- 미들네임이 포함 되어 있는 사람을 찾으세요 (예-Steven Paul Jobs)
let data = names.find((item)=>{
let splitName = item.split(" ")
return splitName[1]
// splitName[1]에 값이 있는 사람 중 첫번째로 나오는 사람을 return 한다.
})
console.log(data)
6. findIndex 문제
- 전체 이름의 길이가 20자 이상인 사람의 인덱스 번호를 찾으세요
let data = names.findIndex((item)=>{
return item.length >= 20
})
console.log(data)
- 미들네임이 포함되어 있는 사람의 인덱스를 찾으세요
let data = names.findIndex((item)=>{
let splitName = item.split(" ")
return splitName[1]
// splitName[1]에 값이 있는 사람 중 첫번째로 나오는 사람을 return 한다.
})
console.log(data)
배열함수 강의 및 정리는 여기를 참고
'항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
2일차 → 문자열 내 p와 y의 개수(toLowerCase(), 삼항연산자, toUpperCase(), split()) (0) | 2021.11.09 |
---|---|
2일차 → 부족한 금액 계산하기(삼항연산자, 가우스의 재림) (0) | 2021.11.09 |
배열함수(forEach, map, filter, some, every, find, findIndex) (0) | 2021.11.08 |
1일차 → 음양 더하기(삼항연산자, *-1) (0) | 2021.11.08 |
1일차 → 없는 숫자 더하기(inclues(), for of 명령문) (0) | 2021.11.08 |
댓글