프로그래머스 - 외계어 사전
해당 문제를 풀 때, 어떤 메소드를 사용하여 해결할까 고민하던 중 find() 함수를 써보려고 했다.
하지만, 배열 내 찾는 값의 유무에 따라 true / false 로 return 하리라 생각했던 것과는 달리 인자
(argument)를 판별 함수를 요구하고 해당 조건 만족한다면 그 첫 번째 요소의 값을 반환, 그렇지 않다면 undefined를 반환한다.
이미지 출처 - https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find
예제 1
var friends = [ {name: 'Son', age: 30}, {name: 'Kane', age: 29}, {name: 'Lucas', age: 30} ]; var result = friends.find( ({ name }) => name == 'Kane'); //result = {name: 'Kane', age: 29}
예제 2
//3번 index 값 없음 var array = ['a', 'b', 'c', , 'e']; array.find(function(el, index) { console.log('key:', index, 'value:', el); }); // 결과 : // key: 0 value: a // key: 1 value: b // key: 2 value: c // key: 3 value: undefined // key: 4 value: e
배열 내 어떤 값의 존재유무를 알고싶은 경우,
includes() 메소드를 사용하는게 낫기에 이를 활용하여 풀이를 진행하였다.function solution(spell, dic) { var answer = 2; spell = spell.sort().reduce((a,b) => a+b); dic = dic.map(x=> x.split('').sort().reduce((a,b)=> a+b)) dic.includes(spell) ? answer = 1 : answer; return answer; }