■ 프로그래밍/알고리즘
[JS] Format a string of names like 'Bart, Lisa & Maggie'.
hi_mj
2020. 11. 21. 16:28
www.codewars.com/kata/53368a47e38700bd8300030d/train/javascript
[ 문제 ]
Given: an array containing hashes of names
Return: a string formatted as a list of names separated by commas except for the last two names, which should be separated by an ampersand.
Example:
list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ]) // returns 'Bart, Lisa & Maggie'
list([ {name: 'Bart'}, {name: 'Lisa'} ]) // returns 'Bart & Lisa'
list([ {name: 'Bart'} ]) // returns 'Bart'
list([]) // returns ''
Note: all the hashes are pre-validated and will only contain A-Z, a-z, '-' and '.'.
[ 풀이 ]
2020.11.21 (20min)
function list(names){
let answer = [];
let result;
if (names.length === 0) return '';
for (let n in names) {
const values = Object.values(names[n]).join('')
if (names.length === 1) {
return values
} else if (names.length === 2 ) {
answer.push(values)
result = answer.join(' & ')
} else {
answer.push(values);
result = answer.join(', ')
let n = result.lastIndexOf(', ')
result = result.slice(0, n) + result.slice(n).replace(', ', ' & ');
}
}
return result
}
Test는 잘 통과했는데, Attempt를 해보니 자꾸 answer 마지막에 'shuffle'이 찍혀서 빈 문자열이 push되어 안맞는다...
다른 곳에서 console 찍었을 땐 안찍히는걸 보아 오류가 있는게 아닐까 싶다