맨날 쓰던 함수도 가끔 헷갈릴 때가 있다.
내장함수는 리턴값으로 배열을 준다는 사실을 알고있다.
console.log( completion.filter((v ,i)=> v))
=>[ 'filipa', 'josipa', 'marina', 'nikola' ]
completion.filter((v ,i)=>console.log(v))
=>filipa
josipa
marina
nikola
리턴값으로 배열을 반환하는 것과 함수 내부에서 콘솔을 찍는 것은 당연히 다르다.. 후
카카오 문제 중에 해쉬문제가 있었다. 그런데 다음과 같은 풀이법을 제시한 사람이 있다..
대충 문제부터 ..
일단 내 코드의 기본적인 동작은 이렇다.
function solution(participant, completion) {
participant.sort()
completion.sort()
for(let i= 0; i < participant.length; i++){
if(participant[i] !== completion[i]){
return participant[i]
}
}
그리고 고인물의 코드(..?????????????????????????????????)
var solution=(_,$)=>_.find(_=>!$[_]--,$.map(_=>$[_]=($[_]|0)+1))
해석은 되는데.. 진짜 해석만 된다.. 조만간 함수형 프로그래밍을 배울 기회가 있으니 다시 한번 뜯어봐야겠다.
++ 이 외에도
배열이 아닌
indexOf(찾을 문자열, 어디서 부터?)로 완주자들의 배열을 찾아, 참가자들의 배열에 하나씩 splice(인덱스 n번에 있는 애를 기준으로, i개를 지울거다, 추가로 ,,,,(3번째 콤마부턴 추가할 아이템)을 등록할 것이다)로 제거해서 마지막 남은 한개를 반환한다거나 하는 방법들이 있었다.
<splice간단 예제>
const a = ["marina", "josipa", "nikola", "filipa", "aa"]
console.log(a.splice(2,1,'hi')) ===> [ 'nikola' ]
//splice의 (2)번째 index에 지운 (1)개의 값 반환
a.splice(2,1,'hi')
console.log(a) ==> [ 'marina', 'josipa', 'hi', 'filipa', 'aa' ] //splice를 한 뒤 새로 추가된 'hi'가 들어간 새로운 배열 반환
<indexOf 간단예제>
const b = ["marina", "josipa", "nikola", "filipa", "aa"]
console.log(b.indexOf('mirina')) // -1 =>문자열 없음
console.log(b.indexOf('marina')) // 0 => 있어서 인덱스 번호 반환
console.log(b.indexOf('josipa',2)) // -1
=>(2)번 인덱스부터 찾는데 즉,["nikola", "filipa", "aa"]에 없음 (-1)
console.log(b.indexOf('nikola',-1)) // -1
=> (-1 = 뒤에서부터 첫번째,) nikola는 뒤 기준 (-3)에 있는데
-1에서부터 찾으니까 결국 ["aa"]에서 찾는 것 == 없음
console.log(b.indexOf('filipa', -2)) // 3
=> -2부터 찾는데 그럼 ["filipa", "aa"]에서 부터 찾음 => -2에 fillipa = 반환되는 인덱스(3(왼쪽기준))