function firstCharacter(str) {
const arr = str.split(' ');
let result = '';
if(!str) return '';
arr.map(el => result = result.concat(el[0]));
// result = result + el[0];
return result;
}
function firstReverse(str) {
return str.split('').reverse().join('');
}
reverse()는 배열순서를 반전한다.
concat()은 arr + arr = arr
join()이 str으로 합침
map으로 써봄
function firstReverse(str) { // return str.split('').reverse().join(''); let arr = str.split(''); let reverse = arr.reverse(); let result = ''; reverse.map(el => result = result + el); return result; }
reduce로 써봄
function firstReverse(str) { let arr = str.split(''); let reverse = arr.reverse(); let result = reverse.reduce((prev, cur) => prev + cur); return result; }
function letterCapitalize(str) {
if(!str) return '';
let arr = str.split(' ');
arr = arr.map(el => el = el[0].toUpperCase() + el.slice(1))
return arr.join(' ');
}
function letterCapitalize(str) {
if(!str) return '';
let arr = str.split(' ');
let result = [];
arr = arr.map(el => {
if(!el) {
result.push(' ');
} else {
result.push(el[0].toUpperCase() + el.slice(1));
}
})
return result.join(' ');
}
띄어쓰기 두번은 못잡는다... 어케했드라
아니 왜 문자가 아니면 split해줬을때 배열에 요소가 +1이 되는거지??
헉 저걸 기준으로 하니까 아무것도없는 사이 공간을 그냥 가른거구나...!!
console.log('---'.split('-'));
(4) ['', '', '', '']
undefined
console.log('hello-world'.split('-'))
(2) ['hello', 'world']
function letterCapitalize(str) {
if(!str) return '';
let arr = str.split('');
let result = [];
for(let i = 0; i < arr.length; i++){
if(arr[i] === ' '){
result.push(' ');
} else if (arr[i -1] === ' ' && arr[i] !== ' ' || i === 0 && arr[i] !== ' '){
result.push(arr[i].toUpperCase());
} else {
result.push(arr[i]);
}
}
return result.join('');
}
레퍼런스를 봤는데 아주 간단한데... 하 전에도 머리를 탁 쳤던 기억이 남ㅋㅋ
string.substr();
기준점에서부터 뒤에까지 나열한다.
띄어쓰기 기준으로 split해준다음 arr[i][0]은 toUpperCase해주고 나머지는 substr으로 붙여주는거...
전에는 안그랬던 것 같은데 mdn에 들어가서 보니까 substr에 문제가 있다고 한다.
그래서 substr을 쓰지 않고 문제를 해결해보기로 하고
function letterCapitalize(str) {
if(!str) return '';
let arr = str.split(' ');
let result = [];
arr = arr.map(el => {
if(!el) {
result.push('');
} else {
result.push(el[0].toUpperCase() + el.slice(1));
}
})
return result.join(' ');
}
핵심은 빈배열일때 빈 배열을 고대로 넣어주는것.
띄어쓰기가 연속될때 빈 배열이 나왔었고, 이 빈 배열을 띄어쓰기로 치환해서 push하니까 띄어쓰기가 1개씩 더 추가가 되었었다. 밤에 졸린데 하니까 머리가 안돌아가서 지금 일어나서 다시 풀어봤는데 금방 풀림!!
그냥 빈 배열로 넣고 띄어쓰기로 합치도록 하니까 됨!! 굿굿
function compressString(str) {
if(!str) return '';
let arr = str.split('');
let result = [];
let temp = [arr[0]];
for(let i = 1; i <= arr.length; i++){
if(temp[0] === arr[i]){
temp.push(arr[i]);
} else {
if(temp.length > 2) {
result.push(temp.length + temp[0]);
} else {
result.push([temp.join('')]);
}
temp = [arr[i]];
}
}
return result.join('');
}
str = 'wwwggopp'라고 가정.
i < arr.length로 하면 마지막 문자가 포함되지 않는다. i가 작거나 같을때까지 돌려야 온전히 출력이 됨!