문자열 배열 n개와 단일 문자를 주고 배열의 문자열에서 단일 문자의 값을 포함하는 index들을 return하는 문제이다.
var findWordsContaining = function(words, x) {
let res = []
//배열을 순회하면서
for(let i = 0 ; i < words.length ; ++i){
//문자열에 x 문자가 포함되어있는지 확인
if(words[i].includes(x)) {
//배열에 추가
res.push(i)
continue
}
}
return res
};
[Type,Color,Name]으로 이루어진 n개의 배열과, 어느 키를 기준으로할지에 해당하는 ruleKey, 만족하는 값은 어떤것인지에 해당하는 ruleValue
이렇게 3개의 값을 주고 조건을 만족하는 개수를 카운팅해서 return하는 문제이다.
var countMatches = function(items, ruleKey, ruleValue) {
//조건에 만족하는 경우에 따라 filtering 해서 length로 return
return items.filter((arr) => ruleKey === "type" ?
arr[0] == ruleValue : ruleKey === "color" ?
arr[1] == ruleValue : arr[2] == ruleValue).length
};
다른 사람들의 풀이를 확인했을 때 ruleKey에 해당하는 값들을 dictionary로 세팅하고, filter를 호출하는 부분을 간단히 하였다
var countMatches = function(items, ruleKey, ruleValue) {
const objectMatch = {
type: 0,
color: 1,
name: 2
};
const intemsFilter = items.filter(ele => ele[objectMatch[ruleKey]] === ruleValue );
return intemsFilter.length;
};
그로 인해 좀 더 깔끔하고 가독성 있는 코드로 구성하였다. key값들은 dictinary를 활용한 방법을 생각해내자.